繁体   English   中英

如何在Java中获取用户的IP地址

[英]how to get users ip address in java

尽管这似乎很简单,但我尝试了通常的request.getRemoteAddr(),request.getRemoteHost(),但我一直在获取服务器地址。 关于我的配置的一些信息,我正在获取我的网关IP。 有谁知道如何获得主要用户的IP地址?

谢谢

如果您和用户之间存在某种代理,那么您可能必须查看X-Forwarded-For标头 请注意,这也不保证一定能起作用,但是如果您只需要“足够好”,那么就足够了。

Apache Http将使用mod_remoteip(1)集成安全机制来处理X-Forwarded-For标头。

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

因此, 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

亲爱的大家,这是一个更新:

[RemoteIpValve已集成在Tomcat 6.0.24中] [1]和[Tomcat 7.0.0中的RemoteIpFilter] [2]。 这是法语的详细文章:[Tomcat:Adresse IP de l'internaute,负载均衡器,反向代理和标头Http X-Forwarded-For] [3](对不起,我们没有时间翻译这篇文章英语)。

西里尔(塞尔维亚)

[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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM