Signatur
Beschreibung
Die Eigenschaft httpEquiv spiegelt das HTML-Attribut http-equiv eines <meta>-Elements wider. Sie legt fest, welche Pragma-Direktive das Element darstellt. Der zugehörige Wert steht in HTMLMetaElement.content. Solche Elemente wirken wie ein HTTP-Antwort-Header, der direkt im Dokument steht.
Gültige Werte laut HTML-Standard sind unter anderem:
content-security-policy: legt eine CSP für das Dokument festrefresh: lädt die Seite neu oder leitet nach einer Wartezeit weiterdefault-style: bestimmt das bevorzugte alternative Stylesheetx-ua-compatible: nur noch der WertIE=edge, veraltetcontent-type: veraltete Schreibweise, heute nimmt man stattdessen<meta charset>set-cookie: veraltet, moderne Browser ignorieren es
Im Alltag liest man die Eigenschaft meist aus. Typische Fälle sind Analyse-Werkzeuge, SEO-Prüfungen oder Tests, die kontrollieren, ob eine Seite eine CSP oder eine Weiterleitung mitbringt. Man kann die Eigenschaft auch schreiben. Die meisten Direktiven wertet der Browser aber nur beim Parsen des Dokuments aus. Eine spätere Änderung per Skript hat deshalb oft keine Wirkung.
Rückgabewert
http-equiv. Fehlt das Attribut, ist es ein leerer String "". Beim Setzen wird das Attribut geschrieben.Beispiele
Alle http-equiv-Direktiven einer Seite auflisten
// Alle <meta>-Elemente mit http-equiv-Attribut sammeln
const pragmas = [...document.querySelectorAll('meta[http-equiv]')]
.map((meta) => ({ direktive: meta.httpEquiv, wert: meta.content }));
console.table(pragmas);
Prüfen, ob die Seite eine CSP per meta-Tag setzt
const hasMetaCsp = () =>
[...document.getElementsByTagName('meta')].some(
(meta) => meta.httpEquiv.toLowerCase() === 'content-security-policy'
);
console.log(hasMetaCsp() ? 'CSP per <meta> vorhanden' : 'Keine CSP per <meta>');
Meta-Element erzeugen und httpEquiv setzen
// Bevorzugtes alternatives Stylesheet festlegen
const meta = document.createElement('meta');
meta.httpEquiv = 'default-style';
meta.content = 'Dunkles Design';
document.head.append(meta);
console.log(meta.outerHTML);
// Wichtig · Fallstricke
- Schreibweise: In JavaScript heißt die Eigenschaft
httpEquiv(camelCase), im HTML heißt das Attributhttp-equiv. Der Wert wird genau so zurückgegeben, wie er im Attribut steht, auch mit Großbuchstaben. Für Vergleiche am bestentoLowerCase()verwenden. - Nachträgliches Einfügen wirkt nur begrenzt: Ein per Skript eingefügtes
refreshwird in vielen Browsern zwar noch ausgeführt, verlassen sollte man sich darauf aber nicht. Eine nachträglich eingefügte CSP gilt nur für Ressourcen, die danach geladen werden. Nimmt man sie wieder heraus, bleibt sie trotzdem aktiv. - Sicherheit: Eine CSP per
<meta>ist schwächer als ein echter HTTP-Header.frame-ancestors,report-uriundsandboxwerden ignoriert. Sie gilt außerdem erst ab der Stelle, an der das Element im Dokument steht. Wenn möglich, sollte man die CSP deshalb als HTTP-Header senden. - Barrierefreiheit: Eine automatische Weiterleitung oder ein Neuladen per
refreshkann Nutzer von Screenreadern stören und verstößt gegen WCAG 2.2.1. Besser ist eine serverseitige Weiterleitung (301/302). - Veraltete Werte:
set-cookieignorieren die Browser,x-ua-compatiblebetraf nur den Internet Explorer. - Kompatibilität: Die Eigenschaft wird seit jeher von allen Browsern unterstützt.