java - 为什么 HttpServletRequest.getRemoteAddr() 在 Java servlet 中不起作用?

标签 java html servlets

<分区>

我正在用 java servlet 开发一个网络应用程序,我希望通过从 processRequest(HttpServletRequest request,HttpServletResponse response)request.getRemoteAddr() 中调用来获取用户 ip 信息.

但是它返回了错误的 IP。由于我对这方面不是很了解,所以我不知道它在显示什么,也许是代理,我得到了这个:

RemoteAddr : 127.0.0.1
RemoteHost : 127.0.0.1
x-forwarded-for : null

127.0.0.1 不是我的 IP。

然而,当我访问:http://www.javascriptkit.com/script/script2/displayip.shtml 时,它会显示正确的,因为我使用的是 servlet,所以我不我的动态生成的 html 页面没有 .shtml,我该怎么办?为什么该站点上的脚本可以正确显示它,而 request.getRemoteAddr() 却不能?

感谢所有的回答,我现在有了一个线索,将它部署到服务器后,它按预期工作。显示了正确的地址。

但即使我在本地机器上开发它,如何要求它显示绝对 IP,就像它在真实服务器上运行一样?还是可行?

最佳答案

它显示的是什么 IP 地址?我的猜测是有一些代理或一些改变的东西。 (例如,出于显而易见的原因,该脚本页面显示了我的 ADSL 路由器的 IP 地址,而不是我 LAN 中的 IP 地址。)

编辑:既然您已经证明您看到的 IP 地址是 127.0.0.1,那么答案就很清楚了——您看到了环回适配器(即同一台机器的快捷方式),大概是因为您在您正在开发的同一台机器上进行测试。答案完全正确。

在另一台机器上试试,你会得到一个更有用的 IP 地址。

关于java - 为什么 HttpServletRequest.getRemoteAddr() 在 Java servlet 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/262887/

相关文章:

javascript - 当上面的某些图层悬停并具有位置偏移时,如何停止图层向下移动

javascript - 根据字体大小在 Canvas 中垂直居中文本

java - 使用 Google App Engine Java 提供动态图像

java - 禁用浏览器中的后退按钮

java - 处理异常的更好方法

java - 如何通过用户输入结束 while 循环

Java EE 安全 - 应用程序客户端

java - Spring中使用注释 Autowiring

javascript - 使用 jQuery 在特定的 <td> 元素中选择 &lt;input&gt;

java - 关于 servlet 的日志配置