在我的项目中,我需要找到一台机器的公共ip地址。
我已经使用Finding public ip address using java中提到的方法实现了该方法
在我的项目中,我有一个类似'http://182.14.10.5:8080/test/addVendor‘的api url (不是精确的url),并且已经被部署在公共ip地址为187.15.161.90的外部tomcat服务器上。
我面临的问题是:当我尝试从其他设备加载这个api url,比如移动设备或属于其他网络的计算机时,每次点击URL都会得到相同的ip 182.14.161.90。
这就是我困惑的地方。无论程序是按照这种方式编写的,还是我得到的输出都是错误的。
根据搜索结果,我理解的是,当我加载特定的api url时,我应该根据连接到不同网络的不同机器获得不同的ip地址。
但是我得到了部署我的项目的服务器的相同公网ip (182.14.161.90)。
谁能澄清它,并帮助我解决这个问题。
如有任何建议,我们将不胜感激。
谢谢
发布于 2018-07-27 20:07:08
在我看来,您有一个通过tomcat部署的Java Web应用程序,并且想要获取用户的IP地址。
您在问题Finding public ip address using java中链接的问题专门用于获取运行Java代码的机器的IP地址(例如,如果您有一个桌面应用程序,并且出于某种原因想要获取运行该应用程序的机器的IP地址)
如果要获取用户的远程IP,则取决于您的服务器配置
如果Tomcat是您环境中唯一的 can服务器,并且它前面没有任何东西,那么您可以使用HttpServletRequest#getRomoteAddr访问请求的远程ip,这将为您提供发起请求的套接字连接的IP地址。
除非您有一个代理服务器,比如Tomcat前面的Apache HTTPD或Nginx,在这种情况下,您需要配置您的服务器来发送X-Forwarded-For报头,并使用HttpServletRequest#getHeader获取用户的远程IP,例如request.getHeader("X-Forwarded-For")
如果我误解了你的问题,请澄清并给我一个评论。
https://stackoverflow.com/questions/51557486
复制相似问题