5

我有一个在 Tomcat 中运行的 Java servlet 应用程序,出于安全原因,我只想能够从机器本身(或者我自己的电脑)运行一个管理命令。因此,为了强制执行此操作,我检查了收到的 HttpServletRequest 的远程地址,但即使请求不是来自本地主机,它也始终返回 127.0.0.1

为什么会这样,我可以修复它还是有另一种方法可以仅从服务器运行我的管理命令。

4

1 回答 1

3

首先检查请求是否具有“X-Forwarded-For”标头。如果设置了标头,则其中的第一个 IP 应该是您要查找的 IP。如果标头为空request.getRemoteAddr(),则应返回正确的 IP。

'X-Forwarded-For' 的 Wiki:http ://en.wikipedia.org/wiki/X-Forwarded-For

请注意,您不能 100% 确定您获得了这样的正确 IP,因为转发实例不会强制设置“X-Forwarded-For”标头。

于 2012-09-19T10:42:49.580 回答