获得空值的request.getHeader(“X转发-FOR”),而在Java中获取客户端的IP地址?

问题描述 投票:2回答:1

我已经部署在具有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();  
   }
java tomcat java-ee networking ip
1个回答
0
投票

如果您使用的是reverse proxy你应该知道吧。然而,最终客户端可以大概要落后一个常规的网络代理。总之,负载均衡器或代理将设置“X - 转发,对于”。从Wikipedia文章,

在X - 转发,对于(XFF)HTTP报头字段是用于通过HTTP代理或负载平衡器识别连接到web服务器的客户端的原始IP地址的事实标准。

根据您的意见和问题还没有一个代理服务器或负载平衡器。为了获得最佳的做法,我会建议你先检查头。如果是null,则使用request.getRemoteAddr()(你报告工作)。

© www.soinside.com 2019 - 2024. All rights reserved.