如服务器使用了反向代理,request.getRemoteAddr() 获取的ip将是127.0.0.1或者其他,解决方法如下:
如果上述代码不能获取IP,查看报文头里的 x-forwarded-for 、 Proxy-Client-IP、WL-Proxy-Client-IP属性
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
如果上述代码不能获取IP,查看报文头里的 x-forwarded-for 、 Proxy-Client-IP、WL-Proxy-Client-IP属性
public String getIpAddr(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.getRemoteAddr();
}
return ip;
}