Verbotener Anforderungsheader
Ein verbotener Anforderungsheader ist ein Name-Wert-Paar eines HTTP-Headers, das in einer Anfrage nicht programmatisch gesetzt oder geändert werden kann. Für Header, die in Antworten nicht geändert werden dürfen, siehe verbotener Antwortheadername.
Das Modifizieren solcher Header ist verboten, weil der User-Agent die volle Kontrolle über sie behält.
Zum Beispiel ist der Date
Header ein verbotener Anforderungsheader, daher kann dieser Code das Nachrichtenfeld Date
nicht setzen:
fetch("https://httpbin.org/get", {
headers: {
Date: new Date().toUTCString(),
},
});
Namen, die mit Sec-
beginnen, sind für die Erstellung neuer Header reserviert, die sicher vor APIs sind, die Entwicklern die Kontrolle über Header geben, wie z. B. fetch()
.
Verbotene Header sind einer der folgenden:
Accept-Charset
Accept-Encoding
Access-Control-Request-Headers
Access-Control-Request-Method
Connection
Content-Length
Cookie
Date
DNT
Expect
Host
Keep-Alive
Origin
Permissions-Policy
Proxy-
HeaderSec-
HeaderReferer
TE
Trailer
Transfer-Encoding
Upgrade
Via
X-HTTP-Method
, aber nur wenn es einen verbotenen Methodennamen enthält (CONNECT
,TRACE
,TRACK
)X-HTTP-Method-Override
, aber nur wenn es einen verbotenen Methodennamen enthältX-Method-Override
, aber nur wenn es einen verbotenen Methodennamen enthält
Hinweis:
Der User-Agent
Header war früher verboten, ist es aber nicht mehr. Chrome entfernt den Header jedoch immer noch stillschweigend aus Fetch-Anfragen (siehe Chromium Fehler 571722).
Hinweis:
Während der Referer
Header in der Spezifikation als verbotener Header aufgeführt ist, behält der User-Agent nicht die volle Kontrolle darüber und der Header kann programmatisch geändert werden. Beispielsweise kann bei der Verwendung von fetch()
der Referer
Header über die referrer
-Option programmatisch geändert werden.
Siehe auch
- Verwandte Glossarbegriffe: