6

プライベートネットワークのサーバーには、同じネットワークのPCから接続されるHttpServletがあります。

サーバーに接続するクライアントのホスト名を知る必要があります。これを行うには、HttpServletRequestのgetRemoteHostメソッドを呼び出します。

このメソッドがクライアントのPC名を返す場合(望ましい動作)と、他のメソッドがIPアドレスを返す場合があります。(同じクライアント、同じサーバー、同じプライベートネットワーク)

APIによると:

java.lang.String getRemoteHost()

クライアントまたはリクエストを送信した最後のプロキシの完全修飾名を返します。エンジンがホスト名を解決できない、または解決しないことを選択した場合(パフォーマンスを向上させるため)、このメソッドは点線形式のIPアドレスを返します。HTTPサーブレットの場合、CGI変数REMOTE_HOSTの値と同じ

戻り値:クライアントの完全修飾名を含む文字列

HTTPサーブレットの場合、その値はCGI変数REMOTE_HOSTと同じであることがわかります。どういう意味ですか?アドレスを解決するかどうかを決定するのはサーバー次第ですか?この動作を強制する方法はありますか?

4

1 に答える 1

3

たとえば、Tomcat では、コネクタに「enableLookups」という設定があり、これはパフォーマンス上の理由からデフォルトで無効になっています。http://tomcat.apache.org/tomcat-7.0-doc/config/http.htmlを参照してください。

他のコンテナでは、同じことを行う方法が異なる場合があります。

于 2013-02-13T14:35:03.183 に答える