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– 提供有關代理本身的資訊,而不是關於連線到它的客戶端的資訊。