ant*_*per 5 java jsf tomcat localhost httprequest
大家好,感谢您的帮助,
我正在使用 JSF 开发一个 Web 应用程序,出于安全原因,我需要在用户登录时捕获他的 IP。
我正在使用以下代码:
HttpServletRequest request=(HttpServletRequest) context.getExternalContext().getRequest();
remoteAddress=request.getRemoteAddr();
Run Code Online (Sandbox Code Playgroud)
问题是,当我检查应用程序日志以检查 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 连接
欲了解更多详情:
我在互联网上搜索并阅读了有关使用的信息:
request.getHeader("X-FORWARDED-FOR");
Run Code Online (Sandbox Code Playgroud)
但它并没有解决我的问题。
我现在很迷茫,有什么想法为什么会发生这种情况吗?
首先,检查您的 http 服务器是否应该转发标头。你正在使用 nginx,这应该可以工作
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Run Code Online (Sandbox Code Playgroud)
如果您已经这样做了,您可以使用 Tomcat 来完成RemoteIpValve
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-Forwarded-For"
requestAttributesEnabled="true"
internalProxies="127.0.0.1" />
Run Code Online (Sandbox Code Playgroud)
这样,当您致电 时request.getRemoteAddr()
,它将提供正确的信息。
归档时间: |
|
查看次数: |
4433 次 |
最近记录: |