張慧的博客

          張慧的博客

            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)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 宜昌市| 柞水县| 中超| 沈丘县| 大方县| 施甸县| 濮阳市| 彰化市| 岱山县| 民勤县| 阿拉善右旗| 亚东县| 锦州市| 武陟县| 武穴市| 禹州市| 咸宁市| 儋州市| 凤庆县| 平乐县| 肥城市| 北安市| 当涂县| 崇文区| 台湾省| 博白县| 万载县| 木里| 南木林县| 义马市| 梨树县| 合川市| 木兰县| 都安| 铜鼓县| 大姚县| 交城县| 西宁市| 天镇县| 确山县| 四川省|