码迷,mamicode.com
首页 > 编程语言 > 详细

java获取客户端ip

时间:2018-07-24 20:54:13      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:http   known   多级   dex   add   color   获取客户端ip   last   rem   

java获取客户端ip

  Java获取IP地址:如果使用了反向代理软件,request.getRemoteAddr()获取到的是代理的ip,并不是客户端的ip。

  经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用

  也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR

  信息用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。

 1  /**
 2      * 获取请求ip地址
 3      * @param request
 4      * @return
 5      */
 6     public static String getIpAddress(HttpServletRequest request) {
 7         String ip = request.getHeader("x-forwarded-for");
 8         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 9             ip = request.getHeader("Proxy-Client-IP");
10         }
11         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
12             ip = request.getHeader("WL-Proxy-Client-IP");
13         }
14         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
15             ip = request.getHeader("HTTP_CLIENT_IP");
16         }
17         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
18             ip = request.getHeader("HTTP_X_FORWARDED_FOR");
19         }
20         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
21             ip = request.getRemoteAddr();
22         }
23         // 如果是多级代理,那么取第一个ip为客户ip
24         /*if (ip != null && ip.indexOf(",") != -1) {
25             ip = ip.substring(ip.lastIndexOf(",") + 1, ip.length()).trim();
26         }*/
27         return ip;
28     }

 

java获取客户端ip

标签:http   known   多级   dex   add   color   获取客户端ip   last   rem   

原文地址:https://www.cnblogs.com/heqiyoujing/p/9362405.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!