从远程计算机访问时,为什么request.getRemoteAddr().equals("127.0.0.1")

Pau*_*lor 5 java security servlets httprequest

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

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

Jon*_*ler 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”标头。