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;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM