问题的现象是使用Request的getRemoteAddr()方法获取的都是局域网的IP地址,参考了一下付总的实现代码,又google了一下搞定了问题。
java 代码
- private final String getClientAddress(HttpServletRequest request) {
- String address = request.getHeader("X-Forwarded-For");
- if (address != null && StringUtil.isIPAddress(address)) {
- return address;
- }
- return request.getRemoteAddr();
- }
另外原因主要是Squid的使用:
参见:www.blogjava.net/Alpha/archive/2006/07/12/57764.aspx
在很多应用下都可能有需要将用户的真实IP记录下来,这时就要获得用户的真实IP地址,在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。
这段时间在做IP统计的程序设计,由于服务器作了集群,使用了反向代理软件,将http://192.168.1.110:2046/的URL反向代理为http://www.xxx.com/的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1 或 192.168.1.110,而并不是客户端的真实IP。这是什么原因呢?
这是反向代理的原因。经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。当我们访问http://www.xxx.com/index.jsp/时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问http://192.168.1.110:2046/index.jsp,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。
分享到:
相关推荐
获取客户端ip地址( 这个必须从客户端传到后台): jsp页面下,很简单,request.getRemoteAddr() ; 因为系统的VIew层是用JSF来实现的,因此页面上没法直接获得类似request,在bean里做了个强制转换java 获取客户端ip ...
本文实例讲述了JS简单获取客户端IP地址的方法。分享给大家供大家参考,具体如下: <!doctype html> <html> <head> <meta charset="utf-8"> <title>使用搜狐接口获取客户端IP地址</...
获取客户端IP地址 vs c#/获取客户端IP地址 vs c#
JS获取客户端IP地址、MAC和主机名的7个方法汇总
Java获取客户端真实IP地址
集成各种获取方式,获取正确的IP
asp.net_web_获取客户端IP和MAC地址
在Controller类获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用...
用于.net获取客户端Mac地址,和IP地址,经过测试可以使用,文件中有源程序。
可以通过java获取客户端IPMAC主机名等信息。下载就能用,欢迎下载!
NULL 博文链接:https://fanshuyao.iteye.com/blog/2436489
获取客户端提交申请时的ip地址,例如用于微信支付的获取客户端ip,根据配置不不同,有可能ipv4或ipv6,当服务器在自己电脑上,做测试是,可以使用127.0.0.1替代localhost
JSP获取客户端IP地址浏览器版本操作系统.pdf
使用Axis发布的webservice,用户服务器端获取客户端的IP地址
.net 通过后台代码获取客户端的主机ip地址和客户端主机名。
可以通过外部Http请求获取客户端IP和地址
jsp获取客户端IP地址的方法.docx
调用新浪网的AIP获取客户端 IP所在地区 根据IP获取客户端所在地址
ASP.NET获取客户端IP地址_系统版本_浏览器版本
js获取客户端ip js获取客户端ip js获取客户端ip