3

一種のリバース プロキシとして 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 の動作は異なりますか?

4

1 に答える 1