禁止請求頭
禁止的請求頭是 HTTP 頭名稱-值對,不能在請求中透過程式設計方式設定或修改。有關禁止在響應中修改的頭,請參閱禁止的響應頭名稱。
禁止修改此類頭的原因是使用者代理對其擁有完全控制權。例如,Date 頭是一個禁止的請求頭,因此此程式碼無法設定訊息的 Date 欄位
js
fetch("https://httpbin.org/get", {
headers: {
Date: new Date().toUTCString(),
},
});
以 Sec- 開頭的名稱保留用於建立新的頭,這些頭在賦予開發者控制頭的 API(例如fetch())中是安全的。禁止的頭是以下之一:
Accept-CharsetAccept-EncodingAccess-Control-Request-HeadersAccess-Control-Request-MethodConnectionContent-LengthCookieDateDNTExpectHostKeep-AliveOriginPermissions-PolicyProxy-頭Sec-頭RefererTETrailerTransfer-EncodingUpgradeViaX-HTTP-Method,但僅當它包含禁止的方法名稱時(CONNECT、TRACE、TRACK)X-HTTP-Method-Override,但僅當它包含禁止的方法名稱時X-Method-Override,但僅當它包含禁止的方法名稱時
注意:User-Agent 頭曾經是禁止的,但現在不再是。然而,Chrome 仍然悄悄地從 Fetch 請求中刪除該頭(參見Chromium bug 571722)。
注意:雖然Referer 頭在規範中被列為禁止的頭,但使用者代理並不對其擁有完全控制權,並且該頭可以透過程式設計方式修改。例如,在使用fetch()時,Referer 頭可以透過referrer 選項進行程式設計修改。