一種のリバース プロキシとして Apache Commons HttpClient 3.1 を使用します。このプロキシ サーバーはポート 8081 のサーブレット コンテナーで実行され、一部の要求を同じサーバーのポート 8080 にプロキシします。ポート 8080 のレガシー サーバーは HTTP ヘッダーを使用していくつかの絶対 URL を構築するため、Host
そのヘッダーを明示的に設定したいと考えています。
HttpClient は設定した値を自動的にオーバーライドするため、他のヘッダーを設定するときに Host-header を設定することはできません。Host
-headerを変更する唯一の方法は、仮想ホストを設定することです。
HttpClient = ...
HttpMethod = ...
HostParams hostParams = new HostParams();
hostParams.setVirtualHost("localhost:8081");
hostConfiguration.setParams(hostParams);
hostConfiguration.setHost("localhost", 8080);
client.executeMethod(hostConfiguration, method);
しかし、HttpClient は接続先のポートを に追加しているように見えるため、これは正常に機能しませんHost
。
11:07:05.011 [qtp1813719644-21] DEBUG httpclient.wire.header - >> "Host: localhost:8081:8080[\r][\n]"
この動作を修正する方法はありますか? そうでない場合、Apache Httpclient 4.x の動作は異なりますか?