您的位置:首页 > 其它

多级代理获取客户端ip地址的方法

2016-04-11 14:25 351 查看
public class HTTPUtils {

 

 public static String getIpAddr(HttpServletRequest request) {

        String ipAddress = request.getHeader("x-forwarded-for");

        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {

            ipAddress = request.getHeader("Proxy-Client-ipAddress");

        }

        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {

            ipAddress = request.getHeader("WL-Proxy-Client-ipAddress");

        }

        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {

            ipAddress = request.getHeader("HTTP_CLIENT_ipAddress");

        }

        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {

            ipAddress = request.getHeader("HTTP_X_FORWARDED_FOR");

        }

        if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {

            ipAddress =request.getRemoteAddr();

            if("127.0.0.1".equals(ipAddress)){  

                //根据网卡取本机配置的ipAddress  

             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;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  获取用户ip