现在的位置: 首页 > 综合 > 正文

java开发_获取访问者IP

2013年07月26日 ⁄ 综合 ⁄ 共 644字 ⁄ 字号 评论关闭

这是在一个opensource项目中看到的获取访问者ip的方法:

  /**
      * 获取访问者IP
      *  
      * 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。
      *  
      * 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割), 
      * 如果还不存在则调用Request .getRemoteAddr()。 
      * 
     * @param request
      * @return11     
 */
  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();    
   }  
  }

抱歉!评论已关闭.