get client IP address

public String getIpAddr(HttpServletRequest request){
String ipAddress = null;   
       
      ipAddress = request.getHeader("x-forwarded-for");   
     if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {   
      ipAddress = request.getHeader("Proxy-Client-IP");   
     }  
      if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {   
         ipAddress = request.getHeader("WL-Proxy-Client-IP");   
    }  
      if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {   
      ipAddress = request.getRemoteAddr();   
      if(ipAddress.equals("127.0.0.1")){   
     
       InetAddress inet=null;   
     try {   
     inet = InetAddress.getLocalHost();  
     } catch (UnknownHostException e) {   
     e.printStackTrace();  
   }  
    ipAddress= inet.getHostAddress();  
      }  
           
     }  

      //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割   
      if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15   
          if(ipAddress.indexOf(",")>0){   
             ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));   
        }  
     }  
    return ipAddress;    

}

猜你喜欢

转载自achieve2015.iteye.com/blog/2269797