首页/网络/协议速查/Forwarded 标准转发信息
HTTP 头与缓存70 条

Forwarded 标准转发信息

RFC 7239 定义的标准转发字段:for=、by=、proto=、host=,用于替代 X-Forwarded-* 一系列私有头。

协议速查网络更新于 2026-10-13

Forwarded 是什么

Forwarded 是 RFC 7239 定义的标准转发字段,用来记录请求在链路上经过的信息:for 是客户端地址,by 是上游代理,proto 是原始协议,host 是原始主机名。它的目标是替代 X-Forwarded-For 等一系列各自为政的私有头。现实情况是私有头的普及度远高于这个标准字段,因此新系统自建链路时建议直接采用标准写法,减少解析歧义。

基本信息

名称Forwarded
作用标准化记录客户端与链路信息
规范RFC 7239
参数for 客户端、by 代理、proto 协议、host 原始主机
多跳写法以逗号分隔逐跳追加
隐私处理可用别名或模糊标识替代真实地址

多跳示例与获取

多跳示例与获取
Forwarded: for=192.0.2.60;proto=http;by=203.0.113.43
Forwarded: for=192.0.2.60, for=198.51.100.17;proto=https;host=www.example.com
# 多跳时以逗号分隔,每一跳把自己与上游信息追加进去
# Nginx 侧可用 proxy_set_header 追加,但必须先清理客户端传入的值

标准字段与私有头对照

标准写法常见私有头说明
forX-Forwarded-For客户端地址,可能有多个
protoX-Forwarded-Proto原始协议,判断是否 HTTPS
hostX-Forwarded-Host原始主机名
byX-Forwarded-Server处理请求的代理标识

典型使用场景

  • 应用取真实客户端地址:在可信代理之后解析该字段用于风控与审计
  • 强制跳转与 Cookie 属性判断:依据原始协议决定是否加安全标记
  • 多级链路排障:按顺序还原请求实际经过的节点
  • 网关规范统一:新建链路时统一采用标准字段,减少解析分歧
  • 安全审计:确认哪些来源可信,避免伪造地址绕过访问控制
这类字段是客户端可以自带的,只有在请求确实经过你信任的代理、且该代理覆盖了传入值时才可信。直接读取链路上的第一个地址用于黑名单或限流,等于把判定权交给调用方,伪造一个地址就能绕过限制。

易错点

  • 无条件信任传入值并用它做限流或风控判断,伪造地址即可绕过
  • 多级代理下取值方向搞错:最左侧是客户端原始信息,最右侧是最近一跳
  • 代理只追加不覆盖,导致客户端预置的伪造值被一直保留
  • 依赖该字段判断是否 HTTPS 却未在入口强制清理,出现跳转循环
  • 同时存在多套私有头与标准字段时取值优先级不明确,行为随部署变化

数据来源与参考

  • RFC 7239 Forwarded HTTP Extension

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌