获取http请求的真实IP地址

  1. /**
  2. * 获取http请求的真实IP地址
  3. * @param request
  4. * @return
  5. */
  6. // cjianquan 2016/8/2
  7. public static String getIPAddr(HttpServletRequest request){
  8. if (request == null)
  9. return null;
  10. String ip = request.getHeader("X-Forwarded-For");
  11. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
  12. ip = request.getHeader("Proxy-Client-IP");
  13. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
  14. ip = request.getHeader("WL-Proxy-Client-IP");
  15. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
  16. ip = request.getHeader("HTTP_CLIENT_IP");
  17. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
  18. ip = request.getHeader("HTTP_X_FORWARDED_FOR");
  19. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
  20. ip = request.getRemoteAddr();
  21. if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip))
  22. try {
  23. ip = InetAddress.getLocalHost().getHostAddress();
  24. }
  25. catch (UnknownHostException unknownhostexception) {
  26. }
  27. return ip;
  28. }
时间: 2024-12-17 19:54:40

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

获取本地请求的真实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 发现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

多级反向代理下,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

通过HttpservletRequest对象获取客户端的真实IP地址

这篇文章主要介绍了Java中使用HttpRequest获取用户真实IP地址,使用本文方法可以避免Apache.Squid.nginx等反向代理软件导致的非真实IP地址,需要的朋友可以参考下 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid,nginx等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的UR