JAVA如何獲取訪問真實IP地址?

解決方法:

獲取請求主機IP地址,如果通過代理進來,則透過防火牆獲取真實IP地址,如果沒有代理,則獲取真實ip

public static String getIp(HttpServletRequest request){

//代理進來,則透過防火牆獲取真實IP地址

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.getHeader("X-Real-IP");

   }

 

//如果沒有代理,則獲取真實ip

if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

ip = request.getRemoteAddr();

}

 

return ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章