如何獲取終端使用者的真實ip
最近發現我們系統中獲取真實ip和http://www.ip138.com/獲取到的不一樣,當然這只是少部分不一樣,絕大多數獲取到的還是一樣的,以下是我們獲取ip的實現程式碼,不知道有什麼不合理的地方,還望請高人指點。謝謝!
/** * 獲得客戶端真實IP地址 * @[author]param[/author] request * @return */ public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("X-Forwarded-For"); ip = getTrueIp(ip); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); ip = getTrueIp(ip); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); ip = getTrueIp(ip); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); ip = getTrueIp(ip); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); ip = getTrueIp(ip); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); ip = getTrueIp(ip); } return ip; } /** * 取真實客戶端IP,過濾代理IP * @[author]param[/author] ip * @return */ public static String getTrueIp(String ip){ if(ip == null || "".equals(ip))return null; if(ip.indexOf(",") != -1) { String[] ipAddr = StringUtil.split(ip, ","); for(int i=0; i<ipAddr.length; i++) { if(isIp(ipAddr[i].trim()) && !ipAddr[i].trim().startsWith("10.") && !ipAddr[i].trim().startsWith("172.16"))return ipAddr[i].trim(); } }else{ if(isIp(ip.trim()) && !ip.trim().startsWith("10.") && !ip.trim().startsWith("172.16")) return ip.trim(); } return null; } <p class="indent"> |
相關文章
- 獲取使用者的真實ip
- nginx後端獲取真實ipNginx後端
- 獲取客戶端真實IP客戶端
- 在PHP中如何獲取使用者的真實IPPHP
- PHP 獲取使用者真實的ipPHP
- Java面試題-如何獲取客戶端真實IPJava面試題客戶端
- .net 獲取客戶端真實ip客戶端
- java 獲取客戶端真實ipJava客戶端
- 【Go】獲取使用者真實的ip地址Go
- 【Go】獲取使用者真實的 ip 地址Go
- Nginx 反向代理後如何獲取真實客戶端 IPNginx客戶端
- 獲取真實IP地址
- nginx多級代理下如何獲取客戶端真實IPNginx客戶端
- 伺服器獲取真實客戶端 IP伺服器客戶端
- nginx反向代理獲取客戶端的真實IP和域名Nginx客戶端
- Nginx 負載均衡 後端伺服器獲取前端使用者真實IPNginx負載後端伺服器前端
- Apapche獲取真實IP地址方法
- 使用 geoip2/geoip2,如何獲取真實使用者 IP 地址
- laravel symfony request獲取真實ip的坑Laravel
- 在容器服務中獲取客戶端真實源 IP客戶端
- 解析域名,獲取域名ip並輸出到終端
- Nginx前端設定反向代理,後端Apache如何獲取訪客的真實IP,結合PHPNginx前端後端ApachePHP
- ABP vNext 審計日誌獲取真實客戶端IP客戶端
- 如何繞過CDN獲取網站的真實IP?手把手教你!網站
- Nginx代理後服務端使用remote_addr獲取真實IPNginx服務端REM
- 經過代理如何獲取真實IP 及 laravel 中配置可信代理的原理Laravel
- js如何獲取圖片的真實尺寸JS
- 如何獲取真實的執行計劃
- 華納雲:怎麼獲取伺服器真實ip伺服器
- 【Nginx】如何獲取客戶端真實IP、域名、協議、埠?看這一篇就夠了!Nginx客戶端協議
- 7個獲取訪問者真實IP的方法,速學!!!
- 關於 Laravel 使用了 CDN 獲取真實 IP 記錄Laravel
- reactnative獲取裝置真實ip地址和ip對映的地理位置React
- 服務端如何獲取客戶端請求IP地址服務端客戶端
- Java獲取使用者IPJava
- pomelo獲取客戶端IP客戶端
- 如何用JavaScript獲取圖片的真實尺寸大小JavaScript
- nginx設定反向代理怎麼獲取客戶端的真實IP和域名以供日誌分析Nginx客戶端