/**
* @Description java获取客户端访问的真实IP地址
* @author temdy
* @Date 2014-11-07
* @param request 请求对象
* @return
*/
public String getIPAddress(HttpServletRequest request){
//获取X-Forwarded-For
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
//获取Proxy-Client-IP
ip = request.getHeader("Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
//WL-Proxy-Client-IP
ip = request.getHeader("WL-Proxy-Client-IP");
}
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
//获取的IP实际上是代理服务器的地址,并不是客户端的IP地址
ip = request.getRemoteAddr();
}
/*
* 如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串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
*/
if (ip.contains(",")){
ip = ip.split(",")[0];
}
return ip;
}
如果您觉得本文的内容对您的学习有所帮助:
关键字:
java 客户端访问的真实IP地址