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