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 トンネル機能から切り離したままにします。