獲取當前訪問客戶端的真實IP地址(含內網地址)
//獲取客戶端真實的IP |
public String getIRealIPAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip) || "null".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip) || "null".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip) || "null".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; } |
可是,如果通過了多級反向代理的話,X-Forwarded-For的值並不止一個,而是一串IP值,究竟哪個才是真正的使用者端的真實IP呢?
答案是取X-Forwarded-For中第一個非unknown的有效IP字串。如:
X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
使用者真實IP為: 192.168.1.110
http://zctya.blog.163.com/blog/static/12091782011620101316128/
相關推薦
獲取當前訪問客戶端的真實IP地址(含內網地址)
在JSP裡,獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid等反向代理軟體就不能獲取到客戶端的真實IP地址了。如果使用了反向代理軟體,用request.getRemoteAd
獲取當前訪問客戶端的真實IP地址,辨別是否為內網?
Test.jsp 測試頁面 TestAddress tsetadres = new TestAddress(); String addIP = request.getRemoteAddr(); if(!addIP.equals("")) { String relIp
獲取客戶端真實ip地址
String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("
Java獲取客戶端真實IP地址的兩種方法
在JSP裡,獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid等反向代理軟體就不能獲取到客戶端的真實IP地址了。 如果使用了反向代理軟體,將http://192.168
如何獲取客戶端真實ip地址
在專案中需要獲取客戶端的真實IP地址,原本使用的是request.getRemoteAddr(),後來釋出到伺服器上時發現取到的值一直是127.0.0.1 原因是,在部署時用了nginx進行反向代理,(小插曲:配nginx的時候一定要記得配 X-Real-I
Java獲取客戶端真實IP地址
1、我們一般在程式開發時,總會用到這種獲取訪問者IP的功能,以便記錄客戶端的登入和訪問行為。一般情況下,我們可以使用 request 的 getRemoteAddr() 方法獲取客戶端實際 IP ,但是 Nginx 使用反向代理後,我們使用 getRemo
php獲取客戶端真實ip地址的三種方法
php獲取使用者(客戶端)真實IP地址的兩種方法 第一種方法,還算靠譜,本人以前一直用的是這個方法: function get_real_ip(){ $ip=false; if(!empty($_SERVER['HTTP_CL
ASP如何獲取客戶端真實IP地址
在ASP中使用 Request.ServerVariables("REMOTE_ADDR") 來取得客戶端的IP地址,但如果客戶端是使用代理伺服器來訪問,那取到的就是代理伺服器的IP地址,而不是真正的客戶端IP地址。要想透過代理伺服器取得客戶端的真實IP地址,就要使用 Request.ServerVaria
nginx代理,tomcat部署服務器,後端獲取客戶端真實ip
nginx代理 獲取真實ip 1、環境部署說明後端部署在tomcat服務器上,前端用nginx做代理訪問tomcat部署目錄nginx配置:upstream wcfront{ server localhost:8991;//後臺接口 } server { listen
Java正確獲取客戶端真實IP方法整理
urn con spa syn 服務器端 span tar url 自己的 在JSP裏,獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid等反向代理軟件就不能獲取到客戶端的真實
負載均衡後獲取客戶端真實ip
String ip3=request.getRemoteAddr(); 如果沒有配負載均衡,則request.getRemoteAddr() 獲取的就是真實客戶端IP,如果配了nginx負載均衡,則request.getRemoteAddr() 獲取的是負載均衡nginx伺服器的ip,而不是真實
nginx反向代理後應用程式如何獲取客戶端真實IP?
nginx反向代理後應用程式如何獲取客戶端真實IP? 2017年10月30日 10:32:03 it_0101 閱讀數:6200 標籤: tomcatjavawebnginx應用伺服器servlet 更多 個人分類: 學習經驗伺服器 版權宣告
多級nginx代理,獲取客戶端真實ip
今天服務裡的微信公眾號支付業務突然不能用了,報錯為網路環境未能通過安全驗證,請稍後再試。檢查後端日誌,沒有任何問題,看來是成功建立支付訂單,但是調起支付時出現了問題。上網查了一下,這個報錯的直接原因是傳入的客戶端ip與調起支付的ip不符。但是印象中我在程式碼中獲取的是X-Forwarded-For,就是請求來
Java Web 獲取客戶端真實IP
發生的場景:伺服器端接收客戶端請求的時候,一般需要進行簽名驗證,客戶端IP限定等情況,在進行客戶端IP限定的時候,需要首先獲取該真實的IP。一般分為兩種情況: 方式一、客戶端未經過代理,直接訪問伺服器端(nginx,squid,haproxy); 方式二、客戶
Jetty/Tomcat + Nginx反向代理獲取客戶端真實IP、域名、協議、埠
問題 Nginx反向代理後,Servlet應用通過request.getRemoteAddr()取到的IP是Nginx的IP地址,並非客戶端真實IP,通過request.getRequestURL()獲取的域名、協議、埠都是Nginx訪問Web應用時的域名、協
php中獲取nginx代理後的,客戶端真實IP
一般來說,PHP獲取IP用的是$_SERVER[‘REMOTE_ADDR’],但是經過代理後,這個方式獲取到的是代理伺服器的ip,不符合要求!如果需要獲取真實IP該做什麼呢? 1.修改nginx配置:p
nginx負載均衡後tomcat獲取客戶端真實IP
tomcat在未加nginx前端負載均衡的情況下訪問日誌中可以直接拿到客戶端額真實IP地址,但是加了nginx前端負載均衡之後tomcat訪問日誌中得到的為nginx的ip,不是客戶端的ip,獲取客戶端的ip可以參照如下方法: 1. 配置nginx 要解決這
PHP獲取客戶端真實IP
我們經常要用資料庫記錄使用者的IP,以下程式碼可以獲取客戶端真實的IP://獲取使用者真實IP function getIp() { if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_C
獲取客戶端真實IP(轉)
@RequestMapping(value=”/test”) @ResponseBody public void test1(HttpServletRequest request,Questionnaire quest,String que
Java面試-如何獲取客戶端真實IP
在進行一些小遊戲開發時,我們經常比較關注的一個功能便是分享。針對分享,我們希望能根據各個城市或者地區,能有不同的分享文案,辨識地區的功能如果由伺服器來完成的話,我們就需要知道客戶端的真實IP。今天我們就來看看伺服器是如何獲取到客戶端的真實IP的。 ## nginx配置 首先,一個請求肯定是可以分為請求頭