java web开发获取客户端访问ip(透过代理和负载均衡)
By:Roy.LiuLast updated:2013-02-22
通常情况下,java的web应用程序可以用 servletRequest.getRemoteAddr() 得到客户端IP地址
但是如果用户是通过代理服务器访问,或者通过了负载均衡去访问(特别是云主机),用上面的代码得到的IP地址是代理服务器或者负载均衡服务器的IP,并不是终端用户的实际IP。为了解决这个问题,应该直接通过 HTTP 请求的HEADER 中获取,因为http 请求中包含了很多客户端的信息,直接可以得到
String ipAddress = request.getRemoteAddr();
但是如果用户是通过代理服务器访问,或者通过了负载均衡去访问(特别是云主机),用上面的代码得到的IP地址是代理服务器或者负载均衡服务器的IP,并不是终端用户的实际IP。为了解决这个问题,应该直接通过 HTTP 请求的HEADER 中获取,因为http 请求中包含了很多客户端的信息,直接可以得到
String ipAddress = request.getHeader("X-FORWARDED-FOR"); if (ipAddress == null) { ipAddress = request.getRemoteAddr(); }
From:一号门
Previous:django admin 根据用户显示不同的列表以及编辑界面等
Next:用java nio合并两个小文件的方法
COMMENTS