Verbotener Header-Name
Ein verbotener Header-Name ist der Name eines HTTP-Headers, der nicht programmatisch geändert werden kann; speziell ein HTTP-Anfrageheader-Name (im Gegensatz zu einem verbotenen Antwortheader-Namen).
Das Ändern solcher Header ist verboten, da der Benutzeragent die vollständige Kontrolle über sie behält. Zum Beispiel ist der Date
-Header ein verbotener Header-Name, daher kann dieses Code-Beispiel das Nachrichtenfeld Date
nicht setzen:
fetch("https://httpbin.org/get", {
headers: {
Date: new Date().toUTCString(),
},
});
Mit Sec-
beginnende Namen sind für die Erstellung neuer Header reserviert, die vor APIs sicher sind, die Entwicklern Kontrolle über Header gewähren, wie zum Beispiel fetch()
. Verbotene Header-Namen beginnen mit Proxy-
oder Sec-
, oder sind einer der folgenden Namen:
Accept-Encoding
Access-Control-Request-Headers
Access-Control-Request-Method
Connection
Content-Length
Cookie
Date
DNT
Expect
Host
Keep-Alive
Origin
Permissions-Policy
Proxy-
HeadersSec-
HeadersReferer
TE
Trailer
Transfer-Encoding
Upgrade
Via
Hinweis: Der User-Agent
-Header ist laut Spezifikation nicht mehr verboten — 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
festgelegt werden. Jedoch wird Chrome den Header in Fetch-Anfragen stillschweigend entfernen (siehe Chromium-Bug 571722).
Hinweis: Während der Referer
-Header in der Spezifikation als verbotener Header aufgeführt ist, behält der Benutzeragent nicht die vollständige Kontrolle über ihn und der Header kann programmatisch verändert werden. Zum Beispiel kann bei Verwendung von fetch()
der Referer
-Header programmatisch über die referrer
-Option geändert werden.
Siehe auch
- Verwandte Glossarbegriffe: