Signatur
Beschreibung
append() hängt einen Wert an einen HTTP-Header in einem Headers-Objekt an. Gibt es den Header noch nicht, wird er angelegt. Gibt es ihn schon, wird der neue Wert zusätzlich gespeichert. Beim Auslesen mit get() kommen die Werte dann als eine Zeichenkette zurück, getrennt durch Komma und Leerzeichen (", "). Genau hier liegt der Unterschied zu set(): set() ersetzt alle bisherigen Werte.
Sinnvoll ist append() vor allem bei Headern, die mehrere Werte haben dürfen, zum Beispiel Accept, Accept-Language oder Cache-Control. Das gilt auch, wenn man Header Schritt für Schritt zusammenbaut, bevor man sie an fetch() oder new Request() übergibt.
Bei Header-Namen spielt die Groß- und Kleinschreibung keine Rolle. Intern werden sie kleingeschrieben gespeichert. Am Anfang und Ende des Werts entfernt die Methode Leerzeichen, Tabs und Zeilenumbrüche. Ungültige Namen oder Werte, etwa mit Zeilenumbrüchen in der Mitte, lösen einen TypeError aus.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $name Pflicht | string | Name des HTTP-Headers, z. B. "Accept". Groß- und Kleinschreibung spielt keine Rolle. |
|
| $value Pflicht | string | Wert, der angehängt werden soll. Andere Typen werden in eine Zeichenkette umgewandelt. |
Beispiele
Header neu anlegen und Werte anhängen
const headers = new Headers();
headers.append('Accept', 'application/json');
headers.append('Accept', 'text/plain');
console.log(headers.get('accept'));
Unterschied zwischen append() und set()
const headers = new Headers({ 'Cache-Control': 'no-cache' });
headers.append('Cache-Control', 'no-store');
console.log(headers.get('Cache-Control'));
// set() ersetzt alle bisherigen Werte
headers.set('Cache-Control', 'max-age=60');
console.log(headers.get('Cache-Control'));
Header für einen fetch-Aufruf zusammenbauen
const loadUser = async (id, token) => {
const headers = new Headers();
headers.append('Accept', 'application/json');
headers.append('Accept-Language', 'de-DE');
if (token) {
headers.append('Authorization', `Bearer ${token}`);
}
const response = await fetch(`/api/users/${id}`, { headers });
if (!response.ok) throw new Error(`HTTP ${response.status}`);
return response.json();
};
loadUser(42, 'abc123').then(user => console.log(user));
Mehrere Set-Cookie-Header (z. B. in Node.js oder einem Service Worker)
const headers = new Headers();
headers.append('Set-Cookie', 'session=xyz; HttpOnly');
headers.append('Set-Cookie', 'theme=dark');
// getSetCookie() liefert die Werte einzeln, ohne sie zusammenzufassen
console.log(headers.getSetCookie());
// Wichtig · Fallstricke
- Werte werden verdoppelt: Wer
append()mehrmals mit demselben Wert aufruft, zum Beispiel in einer Schleife oder bei einem erneuten Versuch, bekommt Werte wie"application/json, application/json". Soll ein Header genau einen Wert haben, nimmt manset(). - Schreibgeschützte Header-Objekte: Die Header von
Response-Objekten ausfetch()sind unveränderlich (guardimmutable). Ein Aufruf vonappend()löst dann einenTypeErroraus. Zum Ändern legt man zuerst eine Kopie an:new Headers(response.headers). - Verbotene Header: Im Browser werden manche Header einer Anfrage stillschweigend ignoriert, zum Beispiel
Host,Cookie,Content-LengthundOrigin. Beimode: 'no-cors'sind nur Header erlaubt, die als CORS-sicher gelten (CORS-safelisted). - CORS: Eigene Header wie
AuthorizationoderX-*lösen bei Anfragen an andere Ursprünge eine Preflight-Anfrage aus. Der Server muss diese Header inAccess-Control-Allow-Headersfreigeben. - Set-Cookie: Mit
get()kommen die Werte zusammengefasst zurück. Die einzelnen Werte liefertgetSetCookie()(in neueren Browsern und in Node.js 19.7+). - Kompatibilität: Funktioniert in allen modernen Browsern, in Web Workern und in Node.js ab Version 18, wo
fetchglobal verfügbar ist. Der Internet Explorer unterstützt die Methode nicht.