在哪种情况下,getRemoteHost方法返回IP地址而不是主机名?

时间:2013-02-13 08:44:55

标签: java networking

在我们专用网络的服务器上,我们有一个HttpServlet,由同一网络的PC联系。

我们需要知道与服务器联系的客户端的主机名。要做到这一点,我们称之为 HttpServletRequest的getRemoteHost方法。

有时这个方法返回客户端的PC名称(想要的行为),而另一些方法则返回IP地址。 (相同的客户端,相同的服务器,相同的专用网络)

API说:

  

java.lang.String getRemoteHost ()

     

返回客户端的完全限定名称或发送请求的最后一个代理。如果引擎不能或不选择解析主机名(以提高性能),则此方法返回IP地址的点串形式。 对于HTTP servlet,与CGI变量的值相同 REMOTE_HOST

     

返回:           包含客户端的完全限定名称的String

我看到HTTP servlet的值与CGI变量REMOTE_HOST的值相同。这是什么意思?由服务器决定是否解决该地址?有没有办法强迫这种行为?

1 个答案:

答案 0 :(得分:3)

例如,在Tomcat中,连接器具有设置" enableLookups"由于性能原因,默认情况下禁用此功能。见http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

其他容器可能有不同的方法来做同样的事情。