張慧的博客

          張慧的博客

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            45 Posts :: 0 Stories :: 24 Comments :: 0 Trackbacks
          這是在一個opensource項目中看到的獲取訪問者ip的方法: 
          /**
                * 獲取訪問者IP
                * 
                * 在一般情況下使用Request.getRemoteAddr()即可,但是經過nginx等反向代理軟件后,這個方法會失效。
                * 
                * 本方法先從Header中獲取X-Real-IP,如果不存在再從X-Forwarded-For獲得第一個IP(用,分割),
                * 如果還不存在則調用Request .getRemoteAddr()。
                * 
                * 
          @param request
                * 
          @return
                
          */
               public static String getIpAddr(HttpServletRequest request) {
                   String ip = request.getHeader("X-Real-IP");
                   if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
                       return ip;
                   }
                   ip = request.getHeader("X-Forwarded-For");
                   if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
                       // 多次反向代理后會有多個IP值,第一個為真實IP。
                       int index = ip.indexOf(',');
                       if (index != -1) {
                           return ip.substring(0, index);
                       } else {
                           return ip;
                       }
                   } else {
                       return request.getRemoteAddr();
                   }
               }
          posted on 2012-07-08 23:31 張慧 閱讀(2984) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 仙居县| 辰溪县| 平江县| 吴忠市| 大竹县| 永和县| 三亚市| 喀喇| 龙南县| 鄂州市| 惠来县| 会理县| 开平市| 德清县| 宣城市| 舒兰市| 乐亭县| 牟定县| 信宜市| 宁波市| 东光县| 东方市| 金阳县| 望都县| 安陆市| 长白| 开封县| 林周县| 睢宁县| 河池市| 阳高县| 镇赉县| 中超| 偏关县| 南京市| 冕宁县| 兰州市| 库尔勒市| 上高县| 江油市| 旬邑县|