Signatur
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
", ", 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);
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'));
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);
}
// 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 liefernnull, außer der Server gibt sie überAccess-Control-Expose-Headersfrei. - Set-Cookie: Im Browser ist
Set-Cookieein verbotener Antwort-Header und immernull. In Node.js/Deno liefertget('set-cookie')die Cookies durch Komma verbunden, was wegen der Kommas in Datumsangaben nicht zuverlässig wieder zerlegt werden kann. Nutze dafürgetSetCookie(). - Bei
mode: 'no-cors'ist die Antwort „opaque“ und die Header sind leer.get()gibt dann immernullzurück. - Der Rückgabewert ist immer ein String. Zahlen wie
Content-Lengthmusst du selbst umwandeln, z. B. mitNumber(). - Ältere Implementierungen (vor etwa 2017) gaben bei mehrfachen Headern nur den ersten Wert zurück. Das zusammengefasste Verhalten gilt in allen aktuellen Browsern.