Verbotener Header-Name
Ein verbotener Header-Name ist der Name eines HTTP-Headers, der programmatisch nicht modifiziert werden kann; genauer gesagt, ein HTTP Anforderungs-Header-Name (im Gegensatz zu einem Verbotenen Antwort-Header-Name).
Das Modifizieren solcher Header ist verboten, da der Nutzeragent die vollständige Kontrolle über sie behält. Zum Beispiel ist der Date
Header ein verbotener Header-Name, 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 dafür reserviert, neue Header zu erstellen, die vor APIs geschützt sind, welche Entwicklern die Kontrolle über Header gewähren, wie etwa fetch()
. Verbotene Header-Namen beginnen mit Proxy-
oder Sec-
, oder sind einer der folgenden Namen:
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
Hinweis:
Der User-Agent
Header ist nicht mehr verboten, laut Spezifikation — siehe Liste der verbotenen Header-Namen (dies wurde in Firefox 43 implementiert) — er kann nun in einem Fetch Headers Objekt oder mit der setRequestHeader() Methode von XMLHttpRequest
gesetzt werden. Allerdings wird Chrome den Header aus Fetch-Anfragen stillschweigend entfernen (siehe Chromium Bug 571722).
Hinweis:
Obwohl der Referer
Header laut Spezifikation als verbotener Header aufgeführt ist, behält der Nutzeragent nicht die vollständige Kontrolle über ihn, und der Header kann programmatisch modifiziert werden. Zum Beispiel kann der Referer
Header beim Verwenden von fetch()
programmatisch über die referrer
Option modifiziert werden.
Siehe auch
- Verwandte Glossarbegriffe: