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:

js
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:

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