轉發

Forwarded 請求頭包含可能由反向代理伺服器(負載均衡器、CDN 等)新增的資訊,這些資訊在請求路徑中涉及代理伺服器時,否則會被更改或丟失。

例如,如果客戶端透過 HTTP 代理(或負載均衡器)連線到 Web 伺服器,伺服器日誌將僅包含代理的 IP 地址、主機地址和協議;此標頭可用於識別原始請求的 IP 地址、主機和協議。此標頭是可選的,並且可以在到達伺服器路徑上的任何代理伺服器上新增、修改或刪除。

此標頭用於除錯、統計和生成位置相關的內容。根據設計,它會公開隱私敏感資訊,例如客戶端的 IP 地址。因此,在部署此標頭時必須牢記使用者的隱私。

此標頭的替代方案和事實上的標準版本是 X-Forwarded-ForX-Forwarded-HostX-Forwarded-Proto 標頭。

標頭型別 請求標頭
禁止的標頭名稱

語法

來自單個代理的轉發標頭的語法如下所示。指令是key=value對,用分號分隔。

http
Forwarded: by=<identifier>;for=<identifier>;host=<host>;proto=<http|https>

如果客戶端和伺服器之間有多個代理伺服器,則每個代理伺服器都可以指定自己的轉發資訊。這可以透過在標頭塊的末尾新增新的Forwarded標頭來完成,或者透過將資訊追加到最後一個Forwarded標頭的末尾(用逗號分隔的列表)來完成。

指令

by 可選

請求進入代理伺服器的介面。識別符號可以是

  • 一個模糊的識別符號(例如“隱藏”或“秘密”)。這應該被視為預設值。
  • 一個 IP 地址(v4 或 v6,可選地帶埠,並且 ipv6 帶引號並括在方括號中)
  • “未知”,當前面的實體未知時(並且您仍然希望指示已進行請求轉發)
for 可選

發起請求的客戶端以及代理鏈中的後續代理。識別符號與by指令具有相同的可能值。

host 可選

代理接收到的Host請求頭欄位。

proto 可選

指示用於發出請求的協議(通常為“http”或“https”)。

示例

使用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.headers.Forwarded的規範資料。
檢查此頁面是否存在問題或為缺少的spec_url貢獻內容至 mdn/browser-compat-data。還要確保規範包含在 w3c/browser-specs.

另請參閱