Start · Sprachen · JavaScript · Referenz · Headers

Headers

Interface

Das <code>Headers</code>-Interface der Fetch API ermöglicht das Abrufen, Setzen, Ergänzen und Entfernen von HTTP-Request- und -Response-Headern.

Kategorie: web-api

Signatur

Headers

Beschreibung

Das Headers-Interface der Fetch API erlaubt es, verschiedene Aktionen auf HTTP-Request- und -Response-Headern durchzuführen. Zu diesen Aktionen gehören das Abrufen, Setzen, Hinzufügen und Entfernen von Headern aus der Liste der Header eines Requests.

Ein Headers-Objekt kann über die Eigenschaften Request.headers und Response.headers abgerufen werden, und ein neues Headers-Objekt lässt sich mit dem Headers()-Konstruktor erzeugen. Im Vergleich zur Verwendung einfacher Objekte bietet die Verwendung von Headers-Objekten beim Senden von Requests zusätzliche Eingabebereinigung. Beispielsweise werden Header-Namen in Kleinbuchstaben normalisiert, führende und nachfolgende Leerzeichen aus Header-Werten entfernt und das Setzen bestimmter Header verhindert.

Weitere Informationen zu den verfügbaren Headern finden Sie in unserer Referenz zu HTTP-Headern.

Ein Headers-Objekt hat eine zugeordnete Header-Liste, die anfangs leer ist und aus null oder mehr Name-Wert-Paaren besteht. Sie können mit Methoden wie append() zu dieser Liste hinzufügen (siehe Beispiele). In allen Methoden dieses Interfaces werden Header-Namen durch eine bytebasierte Sequenz ohne Beachtung der Groß-/Kleinschreibung verglichen.

Ein Objekt, das Headers implementiert, kann direkt in einer for...of-Struktur verwendet werden, anstelle von entries(): for (const p of myHeaders) ist äquivalent zu for (const p of myHeaders.entries()).

Änderungsbeschränkungen: Einige Headers-Objekte unterliegen Einschränkungen dabei, ob die Methoden set(), delete() und append() den Header verändern dürfen. Die Änderungsbeschränkungen werden abhängig davon festgelegt, wie das Headers-Objekt erzeugt wurde.

  • Für Header, die mit dem Headers()-Konstruktor erzeugt wurden, gibt es keine Änderungsbeschränkungen.
  • Für Header von Request-Objekten: Wenn der mode des Requests no-cors ist, können Sie jeden Namen/Wert eines CORS-safelisted request headers ändern. Andernfalls können Sie jeden Namen/Wert eines non-forbidden request headers ändern.
  • Für Header von Response-Objekten: Wenn die Response mit Response.error() oder Response.redirect() erzeugt wurde oder aus einem fetch()-Aufruf empfangen wurde, sind die Header unveränderlich und können nicht modifiziert werden. Andernfalls, wenn die Response mit Response() oder Response.json() erzeugt wurde, können Sie jeden Namen/Wert eines non-forbidden response headers ändern.

Alle Methoden von Headers werfen einen TypeError, wenn Sie eine Referenz auf einen Namen übergeben, der kein gültiger HTTP-Header-Name ist. Die Mutations-Operationen werfen einen TypeError, wenn der Header unveränderlich ist. In allen anderen Fehlerfällen scheitern sie stillschweigend.

Beispiele

Header erstellen und abrufen

const myHeaders = new Headers();

myHeaders.append("Content-Type", "text/xml");
myHeaders.get("Content-Type"); // should return 'text/xml'

Header über den Konstruktor initialisieren

let myHeaders = new Headers({
  "Content-Type": "text/xml",
});

// or, using an array of arrays:
myHeaders = new Headers([["Content-Type", "text/xml"]]);

myHeaders.get("Content-Type"); // should return 'text/xml'

// Wichtig · Fallstricke

Der Unterschied zwischen Headers.set() und Headers.append() besteht darin, dass set() den vorhandenen Wert mit dem neuen überschreibt, wenn der angegebene Header bereits existiert und mehrere Werte akzeptiert, während append() den neuen Wert an das Ende der Wertemenge anhängt. Beim Iterieren über Header-Werte werden diese automatisch in lexikographischer Reihenfolge sortiert, und Werte aus doppelten Header-Namen werden kombiniert.