Signatur
Beschreibung
Headers.values() liefert einen Iterator, der nacheinander die Werte aller in einem Headers-Objekt gespeicherten HTTP-Header ausgibt. Die Namen sind dabei nicht enthalten. Brauchen Sie Name und Wert zusammen, nehmen Sie entries() oder iterieren Sie direkt mit for...of über das Headers-Objekt.
Die Werte kommen in lexikographischer Reihenfolge der kleingeschriebenen Header-Namen zurück, nicht in der Einfügereihenfolge. Hat ein Header mehrere Werte (etwa durch append()), werden sie zu einem String verbunden, getrennt durch ", ". Eine Ausnahme ist Set-Cookie: Jeder Set-Cookie-Header wird als eigener Wert ausgegeben.
Praktisch ist die Methode, wenn nur die Werte interessieren, z. B. um schnell zu prüfen, ob irgendein Header einen bestimmten Wert enthält, oder um Werte zu Debug-Zwecken zu sammeln. Weil der Rückgabewert ein Iterator ist, lässt er sich mit for...of, dem Spread-Operator oder Array.from() verarbeiten.
Rückgabewert
", " verbunden, außer bei Set-Cookie.Beispiele
Alle Werte mit for...of ausgeben
const headers = new Headers({
'X-Request-Id': 'abc-123',
'Content-Type': 'application/json',
'Accept': 'text/html'
});
// Zweiter Wert für Accept wird angehängt
headers.append('Accept', 'application/xml');
for (const value of headers.values()) {
console.log(value);
}
Werte als Array sammeln und durchsuchen
const response = new Response('{}', {
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Cache-Control': 'no-store',
'Content-Encoding': 'gzip'
}
});
const values = [...response.headers.values()];
console.log(values);
// Prüfen, ob irgendein Header-Wert "no-store" enthält
const hatNoStore = values.some((v) => v.includes('no-store'));
console.log(hatNoStore);
Werte einer fetch-Antwort protokollieren
const logHeaderValues = async (url) => {
const res = await fetch(url);
// Array.from mit Mapping-Funktion: Werte kürzen
const kurz = Array.from(res.headers.values(), (v) =>
v.length > 40 ? `${v.slice(0, 40)}…` : v
);
console.table(kurz);
};
logHeaderValues('https://example.com/');
// Wichtig · Fallstricke
- Werte ohne Namen: Welchen Header ein Wert gehört, lässt sich nicht erkennen. Die Reihenfolge richtet sich nach den sortierten Namen, nicht nach der Einfügereihenfolge. Wenn der Name wichtig ist, verwenden Sie
entries()oderget(name). - Zusammengeführte Werte: Mehrere Werte eines Headers kommen als ein String mit
", "zurück. Enthält ein einzelner Wert selbst ein Komma (z. B. ein Datum inExpires), lässt er sich nicht sicher wieder auftrennen. - Set-Cookie: Im Browser sind
Set-Cookie-Header ausfetch-Antworten für Skripte nicht sichtbar (verbotener Antwort-Header). In Node.js, Deno und Service-Umgebungen sind sie sichtbar und werden einzeln ausgegeben. Gezielt auslesen lassen sie sich mitgetSetCookie(). - CORS: Bei Cross-Origin-Antworten enthält der Iterator nur CORS-sichere Antwort-Header und solche, die per
Access-Control-Expose-Headersfreigegeben sind. Beiopaque-Antworten (mode: 'no-cors') ist er leer. - Ändern Sie das
Headers-Objekt nicht, während Sie darüber iterieren. Sonst ist das Ergebnis schwer vorherzusagen. Kopieren Sie die Werte vorher mit[...headers.values()]. - Die Methode ist in allen modernen Browsern verfügbar, in Node.js ab Version 18 global. Der Internet Explorer unterstützt sie nicht.