【发布时间】:2016-01-26 11:59:07
【问题描述】:
我正在 Internet 中部署一个 Web 应用程序,我正在通过检查其客户端 IP 地址(例如 192.168.2.XXX)来检查用户的登录是否有效。实际上,我找到了一个工作代码(如下)。这段代码之前完全可以工作,但一段时间后,它的输出就不再一样了。现在,这段代码只给了我 1 个 IP 地址,它是服务器的 IP 地址。我的代码有什么问题?如何获取客户端的静态 IP 地址而不是服务器的 IP 地址?我也尝试过其他解决方案,例如getRemoteAddr() 和request.getHeader("PROXY-CLIENT-IP"),但它不起作用。
Java:
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if(ipAddress == null)
ipAddress = InetAddress.getLocalHost().getHostAddress();
【问题讨论】:
-
因为第一次,您的请求标头有一个 IP,所以
ipAddress不为空并且您获得了客户端 IP。第二次,它是空的,它进入if分支并给你本地主机的(服务器的)IP。 -
以上链接中的答案均无效
-
@VivekVK 是的,第一行是给我客户端的 IP 地址,但它不是静态的。如何获取客户端以192.168.2.XXX开头的IP地址?
标签: java