获取访问者的真实IP地址,绕过路由映射等

当我们网站需要获取访问者的真实IP地址,而不是访问者的路由地址,
可以使用以下方法:

public String getIp(HttpServletRequest request){
    String ip = request.getHeader("x-forwarded-for");
    if(null = ip || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
        ip = request.getHeader("Proxy-Client-IP");
    }
    if(null = ip || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
        ip = request.getHeader("WL-Proxy-Client-IP");
    }
    if(null = ip || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
        ip = request.getHeader("HTTP-Client-IP");
    }
    if(null = ip || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
        ip = request.getHeader("HTTP-X-FORWARDED-IP");
    }
    if(null = ip || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
        ip = request.getRemoteAddr();
    }else if(ip.length()>15){
        String[] ips = ip.split(",");
        for(int index = 0; index < ip.length(); index ++){
            String strIp = (String)ips[index];
            if(!("unknown".equalsIgnoreCase(strIp))){
                ip = strIp;
                break;
            }
        }
    }
    return ip;
}

你可能感兴趣的:(Java,Web)