Forwarded 头
HTTP Forwarded 请求头包含可能由反向代理服务器(负载均衡器、CDN 等)添加的信息,这些信息在请求路径中涉及代理服务器时可能会被更改或丢失。
例如,如果客户端通过 HTTP 代理(或负载均衡器)连接到 Web 服务器,服务器日志将只包含代理的 IP 地址、主机地址和协议;此头可用于识别原始请求的 IP 地址、主机和协议。该头是可选的,并且可以由到达服务器路径上的任何代理服务器添加、修改或删除。
此头用于调试、统计和生成与位置相关的内容。根据设计,它会暴露隐私敏感信息,例如客户端的 IP 地址。因此,在使用此头时必须牢记用户的隐私。
此头的替代和事实标准版本是 X-Forwarded-For、X-Forwarded-Host 和 X-Forwarded-Proto 头。
语法
http
Forwarded: by=<identifier>;for=<identifier>;host=<host>;proto=<http|https>
指令是 key=value 对,以分号分隔。
如果客户端和服务器之间有多个代理服务器,它们可以各自指定自己的转发信息。这可以通过在头块末尾添加一个新的 Forwarded 头,或者通过将信息附加到最后一个 Forwarded 头的逗号分隔列表中来完成。
指令
示例
使用 Forwarded 头
http
Forwarded: for="_mdn"
# case insensitive
Forwarded: For="[2001:db8:cafe::17]:4711"
# separated by semicolon
Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43
# Values from multiple proxy servers can be appended using a comma
Forwarded: for=192.0.2.43, for=198.51.100.17
从 X-Forwarded-For 过渡到 Forwarded
如果您的应用程序、服务器或代理支持标准化的 Forwarded 头,则可以替换 X-Forwarded-For 头。请注意,在 Forwarded 中,IPv6 地址被引号括起来并用方括号包围(与 X-Forwarded-For 头不同)。
http
X-Forwarded-For: 192.0.2.172
Forwarded: for=192.0.2.172
X-Forwarded-For: 192.0.2.43, 2001:db8:cafe::17
Forwarded: for=192.0.2.43, for="[2001:db8:cafe::17]"
规范
| 规范 |
|---|
| 转发 HTTP 扩展 |
另见
X-Forwarded-ForX-Forwarded-HostX-Forwarded-ProtoVia– 提供有关代理本身的信息,而不是关于连接到它的客户端的信息。