java获取客户端ip

Posted 何其有静

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java获取客户端ip相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

使用Java技术获取客户端的IP地址

java IP查询方法

如何从 Firebase 获取数据到 Recyclerview 中的片段?

java 获取客户端ip地址

Java根据HttpServletRequest请求获取服务器的IP地址

在java web中怎么用java代码获取访问者的IP,同时根据访问者的IP判断他是属于那个城市