【问题标题】:How to get original IP address of a client in java? [duplicate]如何在java中获取客户端的原始IP地址? [复制]
【发布时间】:2017-01-19 15:23:10
【问题描述】:

我们可以从Request对象获取客户端IP地址如下:

 String ipAddress = request.getRemoteAddr();

但是,如果用户在代理服务器后面或通过负载均衡器访问您的 Web 服务器,上述代码将获取代理服务器或负载均衡器服务器的 IP 地址,而不是客户端的原始 IP 地址。

【问题讨论】:

  • 所以这是一个代理,NAT等。如果客户端不将其作为有效负载发送,则无法在本地网络上获取客户端 IP。
  • 唯一的办法就是让客户看到stackoverflow.com/questions/391979/…
  • 为什么?并且不要忘记,IP 地址可能会被欺骗,如果它是通过洋葱路由的,则其意图和目的是无法追溯的。

标签: java


【解决方案1】:

如果我们谈论的是 HTTP 请求,您可以尝试以下方法:

String strForwardedFor = httpServletRequest.getHeader("X-Forwarded-For");

如果代理设置了这个标头,它应该是这样的:

client-ip,proxy1-ip,proxy2-ip,...

【讨论】:

猜你喜欢
  • 2013-05-01
  • 2017-07-06
  • 2016-10-05
  • 1970-01-01
  • 1970-01-01
  • 2013-01-12
  • 2012-03-14
  • 2012-02-16
  • 2014-08-16
相关资源
最近更新 更多