Servlet获取客户端请求的真实IP
private String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("X-Real-IP");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
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.getRemoteAddr();
}
// 多次反向代理后会有多个IP值,第一个为真实IP。
if (!StringUtil.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
if(ip.indexOf(",") > 0){
return ip.substring(0,ip.indexOf(","));
}else {
return ip;
}
}
return ip;
}
String ip = request.getHeader("X-Real-IP");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
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.getRemoteAddr();
}
// 多次反向代理后会有多个IP值,第一个为真实IP。
if (!StringUtil.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
if(ip.indexOf(",") > 0){
return ip.substring(0,ip.indexOf(","));
}else {
return ip;
}
}
return ip;
}
