在 AnyEvent::HTTP 2.25 中,即使连接是在另一个代理设置下建立的,可复用连接也可能被优先使用。当发往同一站点的请求走不同路由时,请用路由专用的 sessionid 值把缓存分开:

my $request = http_get 'http://www.example.com/',
    proxy => ['proxy.example', 8080],
    sessionid => 'office-route',
    sub {
        my ($body, $headers) = @_;
        print $headers->{Status};
    };

把应用所需的账号区分也放进该会话标识中。复用仅限会话匹配的连接。若需要全新连接,则改为把 persistent 设为 false。

对于示例中的公开 HTTP 地址,在允许无需认证的公共路由时,HTTP 代理列表可提供候选主机与端口值。该片段假定 AnyEvent::HTTP 已加载且其事件循环正在运行。请让请求守卫保持存活直到完成;销毁它会取消操作。

代理数组接受主机名、端口和可选的 HTTP 方案,而不是带凭据的 URL。认证需要由调用方提供合适的 Proxy-Authorization 头。这个普通 HTTP 示例把路由与连接所有权同任何 HTTPS 隧道能力分开。

相关文章