Jsp 获取访问者IP地址

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

经过代理以后,由于在客户端和服务器之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端.
但是在转发请求的HTTP头信息中,增加了(x-forwarded-for,Proxy-Client-IP,WL-Proxy-Client-IPX-Real-IP)信息,用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址.

当我们访问index.jsp时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问index.jsp,代理服务器再将访问到的结果返回给我们的浏览器.
因为是代理服务器去访问index.jsp,所以index.jsp中通过request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址.

public String getIpAddr(HttpServletRequest request) {
    String ip = request.getHeader("x-forwarded-for");
    if(null == ip || 0 == ip.length() || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("Proxy-Client-IP");
    }
    if(null == ip || 0 == ip.length() || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("WL-Proxy-Client-IP");
    }
    if(null == ip || 0 == ip.length() || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("X-Real-IP");
    }
    if(null == ip || 0 == ip.length() || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getRemoteAddr();
    }
    return ip;
}

如果通过了多级反向代理的话,IP值并不止一个,而是一串IP值,第一个非unknown的有效IP字符串是用户真实IP地址.
版权声明:本文为博主原创文章,未经博主允许不得转载。

jsp中 如何得到客户端的访问来源和真实IP地址

http://blog.csdn.net/liuqiwen0512/article/details/7567727 得到网页访问来源的常用方法:     js获取来源页地址方法:     v...
  • liyanlei5858
  • liyanlei5858
  • 2016年09月07日 15:28
  • 2618

jsp页面获取服务器Ip地址

jsp导入 java.util.* 即可调用其中的方法来获取了 Server Info
  • lipei1220
  • lipei1220
  • 2016年05月04日 17:40
  • 6964

JSP 获取真实IP地址的代码

转载:http://www.jb51.net/article/21272.htm 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情...
  • awawfwfw
  • awawfwfw
  • 2015年07月26日 15:18
  • 1230

Jsp 获取访问者IP地址

request.getRemoteAddr(),这种方法在大部分情况下都是有效的,但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了. 如果使用了反向代理软件,用r...
  • pangesange
  • pangesange
  • 2017年04月22日 16:12
  • 220

jsp获取每一个访问者的真实IP

  • 2013年03月28日 09:22
  • 1.75MB
  • 下载

用Java来获取访问者真实的IP地址

System.out.println("head.referer=" + request.getHeader("referer")); System.out.println("RemoteHost=...
  • w5q7c3
  • w5q7c3
  • 2013年10月30日 15:04
  • 734

用Java来获取访问者真实的IP地址

用Java来获取访问者真实的IP地址  在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid...
  • blueman2012
  • blueman2012
  • 2011年06月29日 10:56
  • 501

怎样获取访问者真实IP地址

在jsp里,获取客户端的ip地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I...
  • fx_xf
  • fx_xf
  • 2013年06月07日 08:28
  • 555

php获取访问者IP地址汇总

//方法1: ? 1 2 $ip = $_SERVER["REMOTE_ADDR"]; echo $ip; //...
  • bfboys
  • bfboys
  • 2016年10月21日 14:43
  • 143

Java获取客户端/访问者真实IP地址的两种方法

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I...
  • qq_14918243
  • qq_14918243
  • 2016年05月19日 11:32
  • 1815
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Jsp 获取访问者IP地址
举报原因:
原因补充:

(最多只允许输入30个字)