编辑
2023-04-18
遇到的问题
00
请注意,本文编写于 715 天前,最后修改于 715 天前,其中某些信息可能已经过时。

目录

问题
原因
解决方法

问题

HttpSevletRequest 的getRemoteAddr 方法不能获取到客户端的ip地址,显示的是127.0.0.1,这是代理服务器的部署地址

原因

因为经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端,但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。

解决方法

java
String requestIp = ""; String xff = request.getHeader("x-forwarded-for"); if (xff != null) { int index = xff.indexOf(','); if (index != -1) { xff = xff.substring(0, index); } requestIp = xff.trim(); } else { requestIp = request.getRemoteAddr(); }

本文作者:Weee

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!