Start · Sprachen · JavaScript · Referenz · Headers.values()

Headers.values()

Methode

Gibt einen Iterator über alle Header-Werte eines <code>Headers</code>-Objekts zurück, sortiert nach dem kleingeschriebenen Header-Namen.

seit JavaScript Baseline: alle modernen Browser (seit 2017); Node. Kategorie: webapi

Signatur

Headers.prototype.values()

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

Typ
Iterator<string>
Beschreibung
Ein Iterator (Header-Iterator), der für jeden Header-Namen einen String mit dem Wert liefert. Mehrere Werte eines Namens werden mit ", " 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);
}
text/html, application/xml application/json abc-123

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);
[ 'no-store', 'gzip', 'application/json; charset=utf-8' ] true

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/');
(Tabelle mit den für das Skript sichtbaren Header-Werten, z. B. 'text/html; charset=UTF-8')

// 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() oder get(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 in Expires), lässt er sich nicht sicher wieder auftrennen.
  • Set-Cookie: Im Browser sind Set-Cookie-Header aus fetch-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 mit getSetCookie().
  • CORS: Bei Cross-Origin-Antworten enthält der Iterator nur CORS-sichere Antwort-Header und solche, die per Access-Control-Expose-Headers freigegeben sind. Bei opaque-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.