AnyEvent::HTTP:用 sessionid 区分代理路由
当多条代理路由共享同一目标时,请使用显式的 AnyEvent::HTTP 代理和会话标识符。
在 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 隧道能力分开。