X-Forwarded-For(XFF) 是一个 HTTP 扩展header字段,用于标记发起HTTP请求的客户端的真实来源IP。
X-Forwarded-For 请求头格式:
X-Forwarded-For: client, proxy1, proxy2
X-Forwarded-For的内容由逗号+空格来进行分隔。从最远的设备IP开始,依次追加。
例如:当一个客户端(IP0)请求经过proxy1(IP1), proxy2(IP2) 到达目标服务器的时候,XFF为
X-Forwarded-For: IP0, IP1
X-Forwarded-For值列表里并没有IP2, proxy2 接受到请求的时候,它会为XFF追加IP1。而IP2的地址,可以在服务端通过API request.getRemoteAddr()来获得, getRemoteAddr()会从底层的TCP连接里获取到与服务端建立TCP连接的设备 IP。
因此, 当我们需要获取发起请求的用户IP的时候,需要考虑到在请求的链路中存在代理和负载均衡的情况,不能单纯使用getRemoteAddre()方法来获取。
网友评论