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

hij*_*ack 6 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相同.这是什么意思?由服务器决定是否解决该地址?有没有办法强迫这种行为?

bim*_*api 4

例如,在 Tomcat 中,连接器有一个设置“enableLookups”,出于性能原因默认情况下禁用该设置。请参阅http://tomcat.apache.org/tomcat-7.0-doc/config/http.html

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