首页 > 学院 > 开发设计 > 正文

获取请求的IP地址

2019-11-08 20:16:43
字体:
来源:转载
供稿:网友
/**  * 获取用户真实ip地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址, 参考文章:  * http://developer.51cto.com/art/201111/305181.htm  *   * 可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?  * 答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。  *   * 如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130,  * 192.168.1.100  *   * 用户真实IP为: 192.168.1.110  *   * @param request  * @return  */ public static String getIpAddress(HttpServletRequest request) {  String ip = request.getHeader("x-forwarded-for");  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();  }  return ip; }
上一篇:Single Number

下一篇:Sum of Two Integers

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表