JavaWeb开发获取客户IP地址

时间:2019-10-25
本文章向大家介绍JavaWeb开发获取客户IP地址,主要包括JavaWeb开发获取客户IP地址使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11737637.html

  本地调试如果使用的是localhost进行访问, 则会获取到 0:0:0:0:0:0:0:1, 将localhost修改成127.0.0.1或者你的本机ip地址再进行访问就可以看到真实地址了.

  这种方法获取ip地址对nginx部署的服务也是有效果的, 对Apache和Weblogic应该也是可以的.

/**
     * 获取客户端真实ip地址
     * @param request
     * @return
     */
    public String getIp(HttpServletRequest request){
        /**
         * 获取距离服务器最远的那个ip
         */
        String ip = request.getHeader("x-forwarded-for");
        if (ipIsNullOrEmpty(ip)){
            /**
             * apache http服务代理加上的ip
             */
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ipIsNullOrEmpty(ip)){
            /**
             * weblogic插件加上的头
             */
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ipIsNullOrEmpty(ip)){
            /**
             * 真实ip
             */
            ip = request.getHeader("X-Real-IP");
        }
        if (ipIsNullOrEmpty(ip)){
            /**
             * 最后真实的ip
             */
            ip = request.getRemoteAddr();
        }

        return ip;
    }

    /**
     * 当前ip是否为空
     * @param ip
     * @return
     */
    public boolean ipIsNullOrEmpty(String ip){
        if(ip == null || ip.length()==0 || "unknown".equalsIgnoreCase(ip)){
            return true;
        }
        return false;
    }

原文地址:https://www.cnblogs.com/fanerwei222/p/11737637.html