获取客户端静态IP地址

时间:2015-10-27 07:07:29

标签: java

我正在使用Internet中的Web应用程序,我正在通过检查其客户端IP地址(例如 192.168.2.XXX )来检查用户的登录是否有效。实际上,我找到了一个工作代码(如下)。此代码之前完全正常工作,但经过一段时间后,其输出不再相同。现在,这段代码只给我1个IP地址,即服务器的IP地址。我的代码出了什么问题?如何获取客户端的静态IP地址而不是服务器的IP地址?我还尝试了其他解决方案,例如getRemoteAddr()request.getHeader("PROXY-CLIENT-IP"),但它无效。

爪哇:

String ipAddress = request.getHeader("X-FORWARDED-FOR");
if(ipAddress == null)
    ipAddress = InetAddress.getLocalHost().getHostAddress();

1 个答案:

答案 0 :(得分:1)

你混合了两个级别的抽象,这很少是一件好事。 标头X-FORWARDED_FOR由负载均衡器或代理插入。如果客户端直接到达服务器,则此标头不存在,并且您正在执行此代码InetAddress.getLocalHost().getHostAddress();。这正是您所说的:它正在检索运行此代码的主机的IP地址,即Web服务器。

另见:Getting the client IP address: REMOTE_ADDR, HTTP_X_FORWARDED_FOR, what else could be useful?