• 获取请求主机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;  
        }
    

      

  • 相关阅读:
    4.2 手指绘图
    Linux-linux常用操作
    gdb的使用
    时钟的函数
    动态链接库
    简单算法整理
    win的使用
    c语言格式化打印
    Symfony2 学习笔记之控制器
    Symfony2 学习笔记之系统路由
  • 原文地址:https://www.cnblogs.com/xujishou/p/7495876.html
Copyright © 2020-2023  润新知