[英]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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.