为 HTTP 方案设置 HTTP 代理并不一定会配置 HTTPS 请求。在 LWP 中,所请求 URL 的方案决定了使用哪一份代理映射。

可以为一个显式的共享端点同时指定两种方案:

use LWP::UserAgent;

my $ua = LWP::UserAgent->new(timeout => 15);
$ua->proxy(['http', 'https'], 'http://proxy.example.net:8080');
my $response = $ua->get('https://example.com/');

对于获准的公开请求,HTTP 代理列表为共享的 LWP 代理 URL 提供候选。目标是 HTTPS,而代理 URL 是 HTTP。这是正常的 CONNECT 安排,并不是把代理方案改名为 HTTPS 的理由。

如果应用应当读取代理环境变量,请通过 env_proxy 主动启用该发现。如果此客户端从不导入,shell 中存在的变量就没有用处。要检查相关的 HTTPS 设置和绕过规则,而不只是 HTTP 的值。

让所选的配置来源保持明确。在显式赋值之后再导入环境设置,可能使结果与代码看起来选择的端点不同。

证书信任与网站身份验证仍然与代理路由分开。请在各自的阶段分别诊断直连、代理拒绝以及随后的 TLS 错误,而不是一次性替换所有设置。

相关文章