张慧的博客

张慧的博客

  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 张慧 阅读(2980) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: