This question already has answers here:
How do I get the remote address of a client in servlet?
(10个答案)
3年前关闭。
有些我在一些通用类中有这个。
对于每个请求,我都会调用该方法,并在某个时刻将一条记录插入mysql数据库。
在大多数情况下,它可以正常工作,我可以在右侧字段中看到具有有效ip地址的每个请求的记录。但是有时IP应该存在的地方是这样的。 “未知,93.186.30.120”或“ 10.0.1.169,186.38.84.3”
Apache位于前端,侦听端口80,并用作侦听端口8081的Tomcat的代理。
我的路由器配置不允许传递80以外的任何端口发出的任何连接。
有帮助吗?
提前致谢。
从而
表示来自未知本地地址的来自93.186.30.120的代理的请求;和
同样意味着来自本地IP 10.0.1.169的来自186.38.84.3代理的请求
(10个答案)
3年前关闭。
有些我在一些通用类中有这个。
public static String getRequestIp (HttpServletRequest request){
String ipaddr = request.getHeader("X-FORWARDED-FOR");
if (ipaddr == null)ipaddr = request.getRemoteAddr();
return ipaddr;
}
对于每个请求,我都会调用该方法,并在某个时刻将一条记录插入mysql数据库。
在大多数情况下,它可以正常工作,我可以在右侧字段中看到具有有效ip地址的每个请求的记录。但是有时IP应该存在的地方是这样的。 “未知,93.186.30.120”或“ 10.0.1.169,186.38.84.3”
Apache位于前端,侦听端口80,并用作侦听端口8081的Tomcat的代理。
我的路由器配置不允许传递80以外的任何端口发出的任何连接。
有帮助吗?
提前致谢。
最佳答案
X-FORWARDED-FOR HTTP标头的格式为:
X-Forwarded-For: client, proxy1, proxy2, ...
从而
unknown, 93.186.30.120
表示来自未知本地地址的来自93.186.30.120的代理的请求;和
10.0.1.169, 186.38.84.3
同样意味着来自本地IP 10.0.1.169的来自186.38.84.3代理的请求
07-26 03:14