Signatur
Beschreibung
Die Methode entries() des Headers-Interface der Fetch-API gibt einen Iterator zurück, der jedes Header-Paar als zweielementiges Array [name, wert] liefert. Damit lassen sich alle Header einer Request oder Response durchlaufen, protokollieren oder in ein einfaches Objekt umwandeln.
Die Header-Namen werden dabei immer kleingeschrieben und lexikografisch sortiert ausgegeben. Mehrfach gesetzte Header mit demselben Namen (z. B. per append()) erscheinen zu einem Eintrag zusammengefasst, die Werte sind durch ", " getrennt. Die einzige Ausnahme ist Set-Cookie: Hier wird jeder Wert als eigener Eintrag geliefert (sofern der Header überhaupt lesbar ist).
entries() ist identisch mit dem Standard-Iterator headers[Symbol.iterator](). Man kann daher genauso gut direkt for (const [k, v] of headers) schreiben. Praktisch ist entries() vor allem in Kombination mit Object.fromEntries() oder dem Spread-Operator.
Rückgabewert
[name, wert] liefert. Namen sind kleingeschrieben und sortiert.Beispiele
Alle Header eines Headers-Objekts ausgeben
const headers = new Headers({
'Content-Type': 'application/json',
'X-Request-Id': 'abc123'
});
headers.append('Accept', 'text/html');
headers.append('Accept', 'application/json');
for (const [name, wert] of headers.entries()) {
console.log(`${name}: ${wert}`);
}
Antwort-Header in ein einfaches Objekt umwandeln
const ladeMitHeadern = async (url) => {
const response = await fetch(url);
const headerObjekt = Object.fromEntries(response.headers.entries());
console.log(headerObjekt);
return headerObjekt;
};
ladeMitHeadern('https://httpbin.org/get');
Header filtern und als Array weiterverarbeiten
const headers = new Headers({
'X-Custom-A': '1',
'Authorization': 'Bearer geheim',
'X-Custom-B': '2'
});
// Nur eigene X-Header, sensible Header ausblenden
const eigeneHeader = [...headers.entries()]
.filter(([name]) => name.startsWith('x-'));
console.log(eigeneHeader);
// Wichtig · Fallstricke
- Kleinschreibung: Die Namen kommen stets kleingeschrieben zurück – ein Vergleich mit
'Content-Type'schlägt fehl. Für gezielten Zugriff lieberheaders.get()verwenden (Groß-/Kleinschreibung egal). - Zusammengefasste Werte: Mehrere gleichnamige Header werden zu einem durch
", "getrennten String verbunden. FürSet-Cookiegibt esheaders.getSetCookie(). - CORS: Bei Cross-Origin-Antworten sind nur „CORS-safelisted“ Header sowie die per
Access-Control-Expose-Headersfreigegebenen Header sichtbar. Beimode: 'no-cors'(opake Antwort) ist der Iterator leer. - Einmal-Iterator: Der zurückgegebene Iterator ist nach einem Durchlauf erschöpft. Für mehrfache Nutzung erneut
entries()aufrufen oder mit[...headers.entries()]in ein Array kopieren. - Kompatibilität: In allen modernen Browsern verfügbar; im Internet Explorer gibt es die Fetch-API nicht. In Node.js ist
Headersab Version 18 global verfügbar.