编程语言
首页 > 编程语言> > java通过请求对象获取ip地址、获取ip地址

java通过请求对象获取ip地址、获取ip地址

作者:互联网

    /**
     * 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址;
     *
     * @param request
     * @return
     * @throws IOException     */
    public final static String getIpAddress(HttpServletRequest request) throws IOException {        // 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址
        String ip = request.getHeader("X-Forwarded-For");        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {            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.getHeader("HTTP_CLIENT_IP");

            }            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("HTTP_X_FORWARDED_FOR");


            }            if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getRemoteAddr();

            }
        } else if (ip.length() > 15) {
            String[] ips = ip.split(",");            for (int index = 0; index < ips.length; index++) {
                String strIp = (String) ips[index];                if (!("unknown".equalsIgnoreCase(strIp))) {
                    ip = strIp;                    break;
                }
            }
        }        return ip;
    }

 

标签:获取,ip,request,length,equalsIgnoreCase,地址,unknown,null
来源: https://blog.51cto.com/u_15242378/2847747