java web 通過request獲取客戶端IP
/**
* 獲取使用者真實IP地址,不使用request.getRemoteAddr();的原因是有可能使用者使用了代理軟體方式避免真實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
*
* @param request
* @return
*/
public static String getIpAddress(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
相關文章
- Django透過request獲取客戶端IPDjango客戶端
- c# 獲取客戶端IPC#客戶端
- 獲取客戶端真實IP客戶端
- .net 獲取客戶端真實ip客戶端
- Java面試題-如何獲取客戶端真實IPJava面試題客戶端
- spring boot 獲取客戶端ip資訊Spring Boot客戶端
- 伺服器獲取真實客戶端 IP伺服器客戶端
- 一次獲取客戶端 IP 記錄客戶端
- 服務端如何獲取客戶端請求IP地址服務端客戶端
- 在OwinSelfHost專案中獲取客戶端IP地址客戶端
- 在SelfHost專案中獲取客戶端IP地址客戶端
- 阿里雲CDN + nginx多級代理獲取客戶端IP阿里Nginx客戶端
- Nginx 反向代理後如何獲取真實客戶端 IPNginx客戶端
- Spring 客戶端 IP 地址獲取及儲存細節Spring客戶端
- 獲取客戶端Mac地址客戶端Mac
- nginx多級代理下如何獲取客戶端真實IPNginx客戶端
- 在容器服務中獲取客戶端真實源 IP客戶端
- nginx反向代理獲取客戶端的真實IP和域名Nginx客戶端
- ABP vNext 審計日誌獲取真實客戶端IP客戶端
- Nacos - 客戶端例項列表獲取客戶端
- 20180427通過SQL_ID查出執行該SQL客戶端IPSQL客戶端
- 乾貨:不同場景容器內獲取客戶端源IP的方法客戶端
- 通過web url獲取檔案資訊Web
- laravel symfony request獲取真實ip的坑Laravel
- Jaeger的客戶端取樣配置(Java版)客戶端Java
- JAVA通訊(一)——輸入資料到客戶端Java客戶端
- java websocket 客戶端JavaWeb客戶端
- 【Nginx】如何獲取客戶端真實IP、域名、協議、埠?看這一篇就夠了!Nginx客戶端協議
- nginx設定反向代理怎麼獲取客戶端的真實IP和域名以供日誌分析Nginx客戶端
- Zookeeper Java 客戶端搭建Java客戶端
- [Redis 客戶端整合] Java 中常用Redis客戶端比較Redis客戶端Java
- Socket最簡單的客戶端與服務端通訊-Java客戶端服務端Java
- 使用 Java 客戶端透過 HTTPS 連線到 EasysearchJava客戶端HTTP
- Java獲取使用者IPJava
- request 獲取不到 CookieCookie
- WPF 通過程式實現異常隔離的客戶端客戶端
- zookeeper的Java客戶端APIJava客戶端API
- Java Web後臺從request裡面獲取的資料是亂碼問題JavaWeb