内容简介:在生产环境中,客户端请求通常不会与服务端直连,中间往往经过若干代理、负载均衡服务器,所以基于 TCP 层面拿到的如果一个请求在到达服务端之前经过了若干代理,每个遵守相同规范的代理都会追加
在生产环境中,客户端请求通常不会与服务端直连,中间往往经过若干代理、负载均衡服务器,所以基于 TCP 层面拿到的 remote_address
将是这个链路中离服务端最近设备的 IP(这个 IP 无法伪造,否则三次握手无法成功)。所以需要有一种方式能获取到客户端真实 IP。
X-Forwarded-For
的出现便是为了解决这一问题,这个扩展头部不是HTTP/1.1(RFC2616)定义的。在 RFC7239
中,推出了 Forwarded
用于替换已经成为既定标准的前者。
如果一个请求在到达服务端之前经过了若干代理,每个遵守相同规范的代理都会追加 remote_address
到 X-Forwarded-For
字段中,从而使服务端可以拿到客户端的真实 IP。
由于请求头部信息可以伪造,所以通过这个方式拿到的值并不一定可靠。尤其是服务端直接对外提供服务的,只能通过 remote_address
获取 IP。
在 Express 中,可以通过设置 trust proxy
来开启 X-Forwarded-For
受信。
参考
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。