如何在java中获取用户的ip地址

时间:2009-04-29 21:49:18

标签: java

虽然这看起来很简单,但我已经尝试了通常的request.getRemoteAddr(),request.getRemoteHost(),但我不断获取服务器地址。关于我的配置,我得到我的网关IP。有谁知道如何获得实际用户的IP地址?

感谢

3 个答案:

答案 0 :(得分:3)

如果您和用户之间存在某些代理,那么您可能需要查看X-Forwarded-For header。请注意,这不保证也可以使用,但如果您只需要“足够好”,那么它就足够了。

答案 1 :(得分:2)

Apache Http将集成一个安全机制来处理带有mod_remoteip(1)的X-Forwarded-For标头。

以下是Tomcat阀门RemoteIpValve(2)和servlet过滤器XForwardedFilter(3),它们分别在Tomcat和WAR级别集成X-Forwarded-For和X-Forwarded-Proto标头,其安全机制与mod_remoteip相同。

由于这一点,request.getRemoteAddr()request.getRemoteHost()request.isSecure()request.getScheme()request.getServerPort()将公开X-Forwarded-For和X-传输的值Forwarded-Proto而不是前面的代理/负载均衡器的值。

希望这有帮助,

西里尔

cleclerc@xebia.fr

(1)http:/ / httpd.apache.org/docs/trunk/mod/mod_remoteip.html

(2)http:/ / code.google.com/p/xebia-france/wiki/RemoteIpValve

(3)http://code.google.com/p/xebia-france/wiki/XForwardedFilter

答案 2 :(得分:0)

亲爱的,这是一个更新:

[RemoteIpValve已集成在Tomcat 6.0.24] [1]和[Tomcat 7.0.0中的RemoteIpFilter] [2]。这是一篇法文详细文章:[Tomcat:Adresse IP de l'internaute,load balancer,reverse proxy et header Http X-Forwarded-For] [3](抱歉,我们没有时间翻译这篇文章英国)。

Cyrille(Xebia)

[1] http:// tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Remote_IP_Valve

[2] http:// tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_IP_Filter

[3] http://blog.xebia.fr/2009/05/05/tomcat-adresse-ip-de-linternaute-load-balancer-reverse-proxy-et-header-http-x-forwarded-for/