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

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了 Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或 192.168.1.110,而并不是客户端的真实IP。

在实习公司看到的一个方法:

[java] view plaincopyprint?

  1. /**
  2. * 获取Ip地址
  3. * @return
  4. */
  5. protected String getIpAddr() {
  6. HttpServletRequest request = ServletActionContext.getRequest();
  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.getRemoteAddr();
  16. }
  17. return ip;
  18. }

原帖地址:http://blog.csdn.net/smcwwh/article/details/6255324

时间: 2024-11-03 20:49:08

Servlet中获取客服端真实Ip地址的相关文章

Servlet中获取客服端Ip地址(转载)

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的. 但是在通过了 Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了.如果使用了反向代理软件, 用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或 192.168.1.110,而并不是客户端的真实IP /** * 获取Ip地址 * @return */ protected String getIpAddr() {

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

获取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

获取本地请求的真实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 * 可是,如果通过了多级反向代

asp.net 获取客服端ip,服务端ip

客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVariables.Get("Remote_Host").ToString(); 客户端浏览器IE: Request.Browser.Browser; 客户端浏览器 版本号: Request.Browser.MajorVersion;// 客户端操作系统: Request.Browser.Platfo

java获取客服端信息(系统,浏览器等)

String agent = request.getHeader("user-agent"); System.out.println(agent); StringTokenizer st = new StringTokenizer(agent,";"); st.nextToken(); String userbrowser = st.nextToken(); System.out.println(userbrowser); String useros = st.ne

TCP服务器端和客服端(一)

就是一个客服端(Socket)和服务器(ServerSocket)端的链接间.我的理解是一个服务端可以链接多个客服端. 在客服端有输入流outPutStream. 用于发送数据 在服务器端有输出流.inputStream. 用于接受数据. 其他的我觉得多写几次就能够理解了.   客服端Socket package Text; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; publ

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

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