我已经部署在具有IP地址10.xx.xx.90机器上的Tomcat 6.0我的Web应用程序。然后,我想提出一个http请求(从浏览器),以从M / C具有IP地址此应用(10.xx.xx.56)。
我试图让使用request.getHeader以下code.But我得到空值(“X转发-FOR”),其中按要求在我的应用程序客户端(10.xx.xx.56)的IP地址。的getRemoteAddr()返回在其上部署应用程序即10.xx.xx.90机器的IP地址。
但是,如果我做一个HTTP调用从独立Java程序的应用程序,我能够得到客户M / C的IP地址。那么,什么是获取客户端IP address.Do我需要在我的tomcat配置一些正确的方法?
String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
如果您使用的是reverse proxy你应该知道吧。然而,最终客户端可以大概要落后一个常规的网络代理。总之,负载均衡器或代理将设置“X - 转发,对于”。从Wikipedia文章,
在X - 转发,对于(XFF)HTTP报头字段是用于通过HTTP代理或负载平衡器识别连接到web服务器的客户端的原始IP地址的事实标准。
根据您的意见和问题还没有一个代理服务器或负载平衡器。为了获得最佳的做法,我会建议你先检查头。如果是null,则使用request.getRemoteAddr()
(你报告工作)。