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:

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

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