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

      

  • 相关阅读:
    [洛谷P4585] [FJOI2015] 火星商店问题
    [bzoj4311] 向量
    [bzoj4977] [Lydsy1708月赛] 跳伞求生
    sdut-1153 C语言实验——求两个整数之中较大者
    sdut_1116
    sdut_1189
    汉诺塔
    二分查找
    类似二分查找算法
    [YTU]_2922(Shape系列-8)
  • 原文地址:https://www.cnblogs.com/xujishou/p/7495876.html
Copyright © 2011-2022 走看看