从WebSphere中的请求获取客户端IP地址

时间:2015-02-18 17:26:20

标签: java java-ee proxy websphere ip-address

我有一个场景,我需要从请求中检索客户端的ipaddress

我用来获取客户端的ipaddress的代码是:

String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
                    ipAddress = request.getRemoteAddr();
                }

根据我的理解,如果客户端之间有代理,request.getHeader("X-FORWARDED-FOR")将返回客户端的ipaddress。如果客户端和应用服务器之间没有代理,request.getHeader("X-FORWARDED-FOR")将返回null,但在这种情况下request.getRemoteAddr()可以返回ipaddress。

对于我的本地开发,我之间没有任何代理或负载均衡器。所以,在上面的代码中,request.getHeader("X-FORWARDED-FOR")将返回null,然后我可以从request.getRemoteAddr();获取ipaddress,这似乎正常。

对于我的qa和prod环境,我们有一个F5 LOAD BALANCER,它将请求路由到IHS Webserver,然后将请求路由到将部署此代码的Websphere appserver。

所以,在这个分布式环境中,iam猜测request.getHeader("X-FORWARDED-FOR")应该正确地返回客户端的ipaddress。我还没有机会在分布式环境中测试它。

我的想法是否正确或是否有任何问题?

预感谢。

我的想法是否正确

1 个答案:

答案 0 :(得分:1)

你的想法大多是正确的,但这些事情值得注意:

  1. 标题实际上是X-Forwarded-For(注意案例)。

  2. You can have more than one such header

  3. The header itself can contain more than one IP address.