zoukankan      html  css  js  c++  java
  • 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址

    /**
         * 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址; 
         * @Title: getIpAddress
         * @Description: TODO(这里用一句话描述这个方法的作用)
         * @param @param request
         * @param @return
         * @param @throws IOException    参数
         * @return String    返回类型
         * @throws
         */
        public 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;  
        }
    

      

  • 相关阅读:
    Python:解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比
    2018数学建模国赛B题
    目标检测综述整理
    numpy实现两层layer
    应用安全
    应用安全
    应用安全
    应用安全
    应用安全
    应用安全
  • 原文地址:https://www.cnblogs.com/xujishou/p/7495876.html
Copyright © 2011-2022 走看看