我有一个位于路由器后面的web服务器。该服务器上的一个servlet依赖于用户的IP地址,但是,我经常获取我的路由器的IP(即192.168.1.1)而不是真实的IP。我的服务器看到我的路由器的IP而不是客户端的
我该如何解决这个问题?
我有一个位于路由器后面的web服务器。该服务器上的一个servlet依赖于用户的IP地址,但是,我经常获取我的路由器的IP(即192.168.1.1)而不是真实的IP。我的服务器看到我的路由器的IP而不是客户端的
我该如何解决这个问题?
从http://www.whatismyip.com/获取全局IP,我想你可能还需要在有servlet的用户的路由器上配置端口转发。
我知道我的全球IP。基本上,我有两台电脑在我的局域网中。其中之一是使用tomcat + servlets运行网络服务器。另一个(比如说...... 32)向它提出请求。我需要能够从我的servlet中知道该IP。 端口转发也设置 – Ibolit
是IP使本地(LAN)请求? –
如果请求是本地的,那么就不需要端口转发了,你可以分享一下这个servlet代码。 –
我会建议访问http://wwww.whatismyip.com让你知道IP地址,以防你没有试过这种方式。你会从这个链接中获得更多的想法。
这听起来像你的“路由器”实际上表现得像一个反向代理。
你不可能在Java中甚至在你的服务器上解决这个问题。这听起来像是一个路由器配置问题。你可能最好在“超级用户”或“服务器故障”上寻求帮助。
有一点需要记住的是,通过IP地址识别客户端总是有点狡猾。即使一旦你整理出目前的问题,真正的客户端IP地址可能不是出于各种原因可用:
客户端的IP可能被NAT的。
客户端可能正在通过一系列HTTP代理与您的网络服务器通信。
客户端可能欺骗其IP地址。
是的,但在这种情况下,它保证在我的局域网中,并由我控制。 – Ibolit
...直到您改变主意并在其他地方运行应用程序。 :-) –
嗨,我有同样的问题。你找到解决方案吗? – peter
不,我必须找到一条不同的出路。不幸的是,我不记得我做了什么。基本上,你可以通过其他方式识别用户,例如获取他们的会话ID等。 – Ibolit