request.getRemoteAddr()返回null

时间:2015-06-25 09:38:07

标签: java servlets ip-address

我正在使用tomcat 7&amp ;;在本地机器上开发应用程序。 servlet 3。 在这里,我试图在Servlet中读取客户端地址,以使用request.getRemoteAddr()来确定请求的来源,并始终返回null。

我也尝试了here,但面临同样的问题。我读到的一些地方使用机器名而不是localhost将解决问题。我尝试使用机器名称仍然是同样的问题。

是否有人可以提供任何帮助链接或解决方案文档以进行必要的配置更改以检索IP地址?

2 个答案:

答案 0 :(得分:0)

如果已经使用了请求,则getRemoteAddr()可能会返回NULL,这意味着已发送响应。这已经在Tomcat 7中被注意到了

同样作为后备,您可以通过调用getHeader(“X-Forwarded-For”)来检查X-Forwarded-For标头,并查看它返回的IP。

答案 1 :(得分:0)

检查您收到的标题。可能是,请求来自代理,其中存在 X-Forward-For 。在这种情况下,您必须阅读 X-Forwarded-For 值。

req.getRemoteAddr()通过从已打开的套接字连接中读取属性返回。我们说,中间有一个Proxy,Proxy是服务器的直接客户端。代理的责任是以 X-Forwarded-For 标头的形式发送实际客户端的地址。

默认情况下,tomcat不支持 X-Forwarded-For 值。但是有一个过滤器为你完成这项工作。当您致电req.getRemoteAddr();

时,此过滤器将返回 X-Forwarded-For

https://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/filters/RemoteIpFilter.html