request.getRemoteAddr() 获取客户端IP的陷阱

如服务器使用了反向代理,request.getRemoteAddr() 获取的ip将是127.0.0.1或者其他,解决方法如下:
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;
      }

你可能感兴趣的:(request,getRemoteAddr,127.0.0.1)