获取本地请求的真实IP地址

 1 /**
 2  * 自定义访问对象工具类
 3  *
 4  * 获取对象的IP地址等信息
 5  *
 6  */
 7 public class CusAccessObjectUtil {
 8
 9     /**
10      * 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址,
11      * 参考文章: http://developer.51cto.com/art/201111/305181.htm
12      *
13      * 可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?
14      * 答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。
15      *
16      * 如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130,
17      * 192.168.1.100
18      *
19      * 用户真实IP为: 192.168.1.110
20      *
21      * @param request
22      * @return
23      */
24     public static String getIpAddress(HttpServletRequest request) {
25         String ip = request.getHeader("x-forwarded-for");
26         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
27             ip = request.getHeader("Proxy-Client-IP");
28         }
29         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
30             ip = request.getHeader("WL-Proxy-Client-IP");
31         }
32         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
33             ip = request.getHeader("HTTP_CLIENT_IP");
34         }
35         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
36             ip = request.getHeader("HTTP_X_FORWARDED_FOR");
37         }
38         if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
39             ip = request.getRemoteAddr();
40         }
41         return ip.split(",")[0];
42     }
43
44 }  

原文地址:https://www.cnblogs.com/chuyi-/p/9959108.html

时间: 2024-12-12 18:51:27

获取本地请求的真实IP地址的相关文章

获取http请求的真实IP地址

/** * 获取http请求的真实IP地址 * @param request * @return */ // cjianquan 2016/8/2 public static String getIPAddr(HttpServletRequest request){ if (request == null) return null; String ip = request.getHeader("X-Forwarded-For"); if (ip == null || ip.length

阿里云X-Forwarded-For 发现tomcat记录的日志全部来自于SLB转发的IP地址,不能获取到请求的真实IP。

1.背景:阿里云的SLB的负载均衡,在tomcat中获取不到真实IP,而是阿里的内网IP,SLB中俩台或者3台本身是局域网,这里是SLB原理,可以看看,没怎么看懂,呵呵,要细细读下. 2.需要开启tomcat的X-Forwarded-For,在tomcat/conf/server.xml中有一个如下的AccessLogValve 日志纪录功能,当配置中的pattern=common时,对应的日志是如下,无论正常请求和非法请求都会记录. <Valve className="org.apach

Java 通过HttpRequest获取请求用户真实IP地址

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid,nginx等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为 http://www.javapeixun.com.cn / 的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1 或 192.

Servlet中获取客服端真实Ip地址

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了 Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或 192.168.1.110,而并不是客户端的真实IP. 在实习公司看到的一个方法: [java] view plaincopyprint? /** * 获取Ip地址 * 

阿里云X-Forwarded-For 发现tomcat记录的日志所有来自于SLB转发的IP地址,不能获取到请求的真实IP。

1.背景:阿里云的SLB的负载均衡,在tomcat中获取不到真实IP,而是阿里的内网IP,SLB中俩台或者3台本身是局域网,这里是SLB原理,能够看看.没怎么看懂.呵呵,要细细读下. 2.须要开启tomcat的X-Forwarded-For,在tomcat/conf/server.xml中有一个例如以下的AccessLogValve 日志纪录功能.当配置中的pattern=common时.相应的日志是例如以下,不管正常请求和非法请求都会记录. <Valve className="org.a

服务器使用nginx做代理,通过HttpServletRequest获取请求用户真实IP地址

首先,在nginx配置中添加如下配置 server { listen 80; server_name www.wenki.info; #要访问的域名 charset utf8; location / { proxy_pass http://wenki_info; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_fo

获取本地计算机名和IP地址

WSADATA wsadata; if(0 != WSAStartup(MAKEWORD(2, 2), &wsadata)) { AfxMessageBox("初始化网络环境失败!"); return TRUE; } char szHostName[MAX_PATH + 1]; gethostname(szHostName, MAX_PATH); hostent *p = gethostbyname(szHostName); if(p == NULL) { AfxMessage

多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为 http://www.javapeixun.com.cn / 的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1 或 192.168.1.

Java获取请求客户端的真实IP地址

Java获取请求客户端的真实IP地址 Java,获取客户端的IP地址的方法: request.getRemoteAddr() 这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了; 如果使用了反向代理软件,将http://192.168.1.110:2046 的URL反向代理为 http://www.javapeixun.com.cn的URL时, 用 request.getRemoteAddr() 方法获取的IP地址是:127.0