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

Headers.get()

Methode

Gibt alle Werte des Headers mit dem angegebenen Namen als einen durch Komma und Leerzeichen getrennten String zurück, oder <code>null</code>, wenn der Header fehlt.

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

Signatur

Headers.prototype.get(name)

Beschreibung

Die Methode get() des Headers-Interfaces liest den Wert eines HTTP-Headers aus einem Headers-Objekt aus. Solche Objekte begegnen einem vor allem als response.headers bei fetch() oder als request.headers in Service Workern und serverseitigen Laufzeitumgebungen wie Node.js, Deno oder Cloudflare Workers.

Der Header-Name wird ohne Beachtung der Groß-/Kleinschreibung gesucht: get("Content-Type") und get("content-type") liefern dasselbe Ergebnis. Wurde ein Header mehrfach gesetzt (z. B. über append()), fasst get() alle Werte in der Reihenfolge ihres Einfügens zu einem einzigen String zusammen, getrennt durch ", ".

Existiert der Header nicht, gibt die Methode null zurück, nicht undefined und keinen leeren String. Ein leerer String bedeutet dagegen, dass der Header vorhanden ist, aber keinen Wert hat. Um nur auf Vorhandensein zu prüfen, ist has() besser lesbar.

Parameter

Name Typ Default Beschreibung
$name Pflicht string Name des gesuchten HTTP-Headers. Groß-/Kleinschreibung spielt keine Rolle. Ein ungültiger Header-Name (z. B. mit Leerzeichen oder Doppelpunkt) löst einen TypeError aus.

Rückgabewert

Typ
string | null
Beschreibung
Ein String mit allen Werten des Headers, verbunden durch ", ", oder null, wenn kein Header mit diesem Namen existiert.

Beispiele

Content-Type einer Fetch-Antwort prüfen

const loadData = async (url) => {
  const response = await fetch(url);
  const contentType = response.headers.get('content-type');

  if (contentType?.includes('application/json')) {
    return response.json();
  }
  return response.text();
};

const data = await loadData('https://api.github.com/');
console.log(typeof data);
object

Mehrfach gesetzte Header werden zusammengefasst

const headers = new Headers();
headers.append('Accept-Encoding', 'gzip');
headers.append('accept-encoding', 'br');

console.log(headers.get('Accept-Encoding'));
console.log(headers.get('X-Nicht-Vorhanden'));
gzip, br null

Paginierung und Rate-Limit aus Antwort-Headern lesen

const response = await fetch('https://api.github.com/repos/nodejs/node/issues');

const remaining = Number(response.headers.get('x-ratelimit-remaining') ?? 0);
const link = response.headers.get('link');

console.log(`Verbleibende Anfragen: ${remaining}`);
if (link) {
  const next = link.match(/<([^>]+)>;\s*rel="next"/)?.[1];
  console.log('Nächste Seite:', next);
}
Verbleibende Anfragen: 59 Nächste Seite: https://api.github.com/repositories/27193779/issues?page=2

// Wichtig · Fallstricke

  • CORS: Bei Anfragen an eine andere Herkunft (Cross-Origin) kann JavaScript nur die sicheren Antwort-Header lesen (Cache-Control, Content-Language, Content-Length, Content-Type, Expires, Last-Modified, Pragma). Alle anderen liefern null, außer der Server gibt sie über Access-Control-Expose-Headers frei.
  • Set-Cookie: Im Browser ist Set-Cookie ein verbotener Antwort-Header und immer null. In Node.js/Deno liefert get('set-cookie') die Cookies durch Komma verbunden, was wegen der Kommas in Datumsangaben nicht zuverlässig wieder zerlegt werden kann. Nutze dafür getSetCookie().
  • Bei mode: 'no-cors' ist die Antwort „opaque“ und die Header sind leer. get() gibt dann immer null zurück.
  • Der Rückgabewert ist immer ein String. Zahlen wie Content-Length musst du selbst umwandeln, z. B. mit Number().
  • Ältere Implementierungen (vor etwa 2017) gaben bei mehrfachen Headern nur den ersten Wert zurück. Das zusammengefasste Verhalten gilt in allen aktuellen Browsern.