【发布时间】:2014-01-25 00:15:24
【问题描述】:
大家好,感谢您的帮助,
我正在使用 JSF 开发一个 Web 应用程序,出于安全原因,我需要在用户登录时捕获用户的 IP。
我正在使用以下代码:
HttpServletRequest request=(HttpServletRequest) context.getExternalContext().getRequest();
remoteAddress=request.getRemoteAddr();
问题是,当我检查我的应用程序日志以检查 IP 地址时,它总是返回 127.0.0.1。
[INFO] 07/01/2014 11:04:22 --> 用户 xxx 从 127.0.0.1 连接
[INFO] 07/01/2014 11:27:43 --> 用户 xxx 从 127.0.0.1 连接
更多详情:
- 我正在使用 tomcat 7
- 我的服务器在 debian 虚拟机中运行
- 我正在从与包含 VM 的电脑不同的电脑连接到服务器。
我在互联网上搜索并阅读了有关使用的信息:
request.getHeader("X-FORWARDED-FOR");
但这并没有解决我的问题。
我现在很迷茫,知道为什么会这样吗?
【问题讨论】:
-
我认为如果您在同一台物理机上进行测试,它将始终显示本地 IP (127.0.0.1)..
-
那是我不在同一台物理机上测试的东西。
-
您的虚拟机是否有公共 IP,或者您是否使用某种本地 NAT 或基于 iptables 的端口转发?您是通过 Apache 前端访问 Tomcat 还是直接调用 Tomcat?
-
服务器和我的电脑都在一个私有 LAN (10.X.X.X) 中,我正在使用 Apache
-
我忘了说所有流量都重定向到8443端口
标签: java jsf tomcat localhost httprequest