【发布时间】:2020-08-24 07:58:18
【问题描述】:
考虑一个场景,
A 正在运行服务器。
B 连接到 A。此外,B 正在运行服务器。 B 用作路由器。
C 连接到 B。
Network Architecture
现在 C 通过 B 向 A 发出 HTTP 请求。
即 C 将请求 B,B 将请求 A。
B 从 A 得到的响应将被发送给 C。
那么A如何区分来自B的请求是否是来自B的原始请求。
还是来自 B 的其他一些客户的请求?
【问题讨论】:
考虑一个场景,
A 正在运行服务器。
B 连接到 A。此外,B 正在运行服务器。 B 用作路由器。
C 连接到 B。
Network Architecture
现在 C 通过 B 向 A 发出 HTTP 请求。
即 C 将请求 B,B 将请求 A。
B 从 A 得到的响应将被发送给 C。
那么A如何区分来自B的请求是否是来自B的原始请求。
还是来自 B 的其他一些客户的请求?
【问题讨论】:
B 被称为“代理”。
代理可以添加HTTP头:
X-Forwarded-For: <client>, <proxy1>, <proxy2>
这样A 就会知道B 是来自C 的请求的代理。
X-Forwarded-For (XFF) 标头是一个事实上的标准标头,用于 识别连接到 Web 的客户端的原始 IP 地址 通过 HTTP 代理或负载平衡器的服务器。
请看这里: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
【讨论】: