Headers
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2017 browserübergreifend verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Mit der Headers-Schnittstelle der Fetch API können Sie verschiedene Aktionen für HTTP-Request- und -Response-Header ausführen. Dazu gehören das Abrufen, Setzen, Ergänzen und Entfernen von Headern aus der Header-Liste des Objekts.
Sie können ein Headers-Objekt über die Eigenschaften Request.headers, Response.headers und WebTransport.responseHeaders abrufen oder mit dem Konstruktor Headers() ein neues Headers-Objekt erstellen.
Im Vergleich zu einfachen Objekten bietet die Verwendung von Headers-Objekten beim Senden von Requests eine zusätzliche Bereinigung der Eingaben. Beispielsweise werden Header-Namen in Kleinbuchstaben umgewandelt, führende und nachgestellte Leerzeichen aus Header-Werten entfernt und das Setzen bestimmter Header verhindert.
Hinweis: Weitere Informationen zu den verfügbaren Headern finden Sie in unserer Referenz zu HTTP-Headern.
Konstruktor
Headers()-
Erstellt ein neues
Headers-Objekt.
Instanzmethoden
Headers.append()-
Hängt einen neuen Wert an einen vorhandenen Header in einem
Headers-Objekt an oder fügt den Header hinzu, falls er noch nicht vorhanden ist. Headers.delete()-
Löscht einen Header aus einem
Headers-Objekt. Headers.entries()-
Gibt einen
iteratorzurück, mit dem Sie alle in diesem Objekt enthaltenen Schlüssel-Wert-Paare durchlaufen können. Headers.forEach()-
Führt eine bereitgestellte Funktion einmal für jedes Schlüssel-Wert-Paar in diesem
Headers-Objekt aus. Headers.get()-
Gibt eine
String-Zeichenfolge mit allen Werten eines Headers mit dem angegebenen Namen innerhalb einesHeaders-Objekts zurück. -
Gibt ein Array mit den Werten aller einer Response zugeordneten
Set-Cookie-Header zurück. Headers.has()-
Gibt einen booleschen Wert zurück, der angibt, ob ein
Headers-Objekt einen bestimmten Header enthält. Headers.keys()-
Gibt einen
iteratorzurück, mit dem Sie alle Schlüssel der in diesem Objekt enthaltenen Schlüssel-Wert-Paare durchlaufen können. Headers.set()-
Setzt einen neuen Wert für einen vorhandenen Header in einem
Headers-Objekt oder fügt den Header hinzu, falls er noch nicht vorhanden ist. Headers.values()-
Gibt einen
iteratorzurück, mit dem Sie alle Werte der in diesem Objekt enthaltenen Schlüssel-Wert-Paare durchlaufen können.
Hinweis:
Der Unterschied zwischen Headers.set() und Headers.append() besteht darin, dass Headers.set() einen vorhandenen Wert durch den neuen Wert ersetzt, wenn der angegebene Header bereits vorhanden ist und mehrere Werte zulässt. Headers.append() hängt den neuen Wert hingegen an das Ende der vorhandenen Werte an. Codebeispiele finden Sie auf den jeweiligen Seiten.
Hinweis: Beim Durchlaufen von Header-Werten werden diese automatisch in lexikografischer Reihenfolge sortiert. Werte von Headern mit demselben Namen werden zusammengefasst.
Beschreibung
Ein Headers-Objekt besitzt eine zugehörige Header-Liste, die anfangs leer ist und aus null oder mehr Name-Wert-Paaren besteht. Sie können dieser Liste mit Methoden wie append() Einträge hinzufügen (siehe Beispiele).
Bei allen Methoden dieser Schnittstelle werden Header-Namen anhand einer Bytefolge verglichen, ohne zwischen Groß- und Kleinschreibung zu unterscheiden.
Ein Objekt, das Headers implementiert, kann direkt in einer for...of-Struktur statt mit entries() verwendet werden: for (const p of myHeaders) entspricht for (const p of myHeaders.entries()).
Einschränkungen bei Änderungen
Bei einigen Headers-Objekten ist eingeschränkt, ob die Methoden set(), delete() und append() die Header verändern dürfen.
Welche Einschränkungen gelten, hängt davon ab, wie das Headers-Objekt erstellt wurde:
- Für Header, die mit dem Konstruktor
Headers()erstellt wurden, gelten keine Einschränkungen bei Änderungen. - Für Header von
Request-Objekten:- Wenn der
modedes Requestsno-corsist, können Sie Namen und Werte aller CORS-safelisted request header ändern. - Andernfalls können Sie Namen und Werte aller nicht verbotenen Request-Header ändern.
- Wenn der
- Für Header von
Response-Objekten:- Wenn die Response mit
Response.error()oderResponse.redirect()erstellt oder von einem Aufruf vonfetch()empfangen wurde, sind die Header unveränderlich. - Wenn die Response dagegen mit
Response()oderResponse.json()erstellt wurde, können Sie Namen und Werte aller nicht verbotenen Response-Header ändern.
- Wenn die Response mit
- Header, die von der Eigenschaft
WebTransport.responseHeaderszurückgegeben werden, sind unveränderlich.
Alle Headers-Methoden lösen einen TypeError aus, wenn Sie einen Namen übergeben, der kein gültiger HTTP-Header-Name ist. Änderungsoperationen lösen einen TypeError aus, wenn der Header unveränderlich ist. In allen anderen Fehlerfällen schlagen sie ohne Fehlermeldung fehl.
Beispiele
Im folgenden Ausschnitt erstellen wir mit dem Konstruktor Headers() ein neues Headers-Objekt, fügen ihm mit append() einen Header hinzu und rufen dessen Wert anschließend mit get() ab:
const myHeaders = new Headers();
myHeaders.append("Content-Type", "text/xml");
myHeaders.get("Content-Type"); // should return 'text/xml'
Dasselbe lässt sich erreichen, indem Sie dem Konstruktor ein Array aus Arrays oder ein Objektliteral übergeben:
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'
Spezifikationen
| Spezifikation |
|---|
| Fetch> # headers-class> |