Cross-Origin Headers für WordPress
COOP, CORP und optional COEP auf WordPress einrichten — per functions.php oder .htaccess, mit Hinweisen zu Plugin-Kompatibilität und oEmbed-Problemen.
Cross-Origin Headers auf WordPress
WordPress setzt Cross-Origin Headers am einfachsten über die functions.php mit dem send_headers-Hook — oder alternativ über .htaccess auf Apache-basierten Servern. Besondere Vorsicht ist bei COEP geboten: WordPress lädt standardmäßig viele externe Ressourcen über oEmbed (YouTube, Twitter, Vimeo), die durch COEP blockiert werden können.
Diese Anleitung zeigt die sichere Implementierung in drei Schritten: COOP für Fenster-Isolation, CORP für Ressourcenschutz und eine Warnung zu COEP mit konkreten WordPress-Kompatibilitätsproblemen. Die empfohlene Strategie: COOP + CORP ohne COEP — maximaler Schutz bei minimaler Bruchgefahr. Cross-Origin Headers bringen 30 von 166 Punkten im Wolf-Agents Web Security Check.
COOP konfigurieren — Fenster-Isolation aktivieren
Setzen Sie Cross-Origin-Opener-Policy und Cross-Origin-Resource-Policy über den send_headers-Hook in der functions.php. COEP bleibt bewusst auskommentiert, da es WordPress-Embeds brechen kann.
// Cross-Origin Headers setzen
function add_cross_origin_headers() {
// CORP - für eigene Ressourcen
header('Cross-Origin-Resource-Policy: same-site');
// COOP - Fenster-Isolation
header('Cross-Origin-Opener-Policy: same-origin-allow-popups');
// COEP - Vorsicht bei Drittanbieter-Inhalten!
// header('Cross-Origin-Embedder-Policy: credentialless');
}
add_action('send_headers', 'add_cross_origin_headers'); send_headers statt wp_headers? Der send_headers-Hook feuert früher im WordPress-Lifecycle und setzt die Header bevor irgendein Output generiert wird. Das ist zuverlässiger als wp_headers, das nur für HTML-Responses greift.
.htaccess Auf Apache-basierten WordPress-Installationen können Sie die Header auch über .htaccess setzen. Der Vorteil: Die Header gelten auch für statische Dateien (Bilder, CSS, JS), die PHP nicht durchlaufen.
CORP hinzufügen — sichere WordPress-Konfiguration
Die sichere Konfiguration setzt COOP und CORP, verzichtet aber bewusst auf COEP. So schützen Sie Ihre WordPress-Site vor Window-Manipulation und unkontrolliertem Ressourcenzugriff, ohne Drittanbieter-Integrationen zu brechen.
function safe_cross_origin_headers() {
// Nur COOP und CORP, kein COEP
header('Cross-Origin-Resource-Policy: same-site');
header('Cross-Origin-Opener-Policy: same-origin-allow-popups');
}
add_action('send_headers', 'safe_cross_origin_headers'); WordPress-Kompatibilität prüfen
Gutenberg/Block-Editor
COOP und CORP sind kompatibel. COEP kann externe Embed-Blocks (YouTube, Twitter) im Editor blockieren.
oEmbed-Inhalte
YouTube, Twitter, Vimeo-Embeds funktionieren mit COOP + CORP. COEP blockiert diese, weil sie keinen CORP-Header senden.
WooCommerce & Plugins
Payment-Popups funktionieren mit same-origin-allow-popups. Prüfen Sie Plugins, die externe Ressourcen laden.
functions.php-Änderungen. So bleiben die Header auch nach Theme-Updates erhalten. COEP — warum Sie es auf WordPress vermeiden sollten
Cross-Origin-Embedder-Policy mit require-corp erzwingt, dass alle eingebetteten Ressourcen einen CORP- oder CORS-Header senden. WordPress lädt standardmäßig viele externe Ressourcen — COEP bricht diese mit hoher Wahrscheinlichkeit.
SharedArrayBuffer. <IfModule mod_headers.c>
# Basis Cross-Origin Schutz
Header always set Cross-Origin-Resource-Policy "same-site"
Header always set Cross-Origin-Opener-Policy "same-origin-allow-popups"
</IfModule> # Cross-Origin Header prüfen
curl -sI https://example.com | grep -i cross-origin
# Erwartete Ausgabe:
# cross-origin-opener-policy: same-origin-allow-popups
# cross-origin-resource-policy: same-site credentialless Falls Sie COEP dennoch benötigen, verwenden Sie Cross-Origin-Embedder-Policy: credentialless (Chrome 96+, Firefox 119+). Es ist weniger streng als require-corp und bricht seltener Drittanbieter-Ressourcen. Safari unterstützt es allerdings nicht.
Wie steht Ihre Domain bei Cross-Origin Headers?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.
Häufig gestellte Fragen
Bricht COEP den Gutenberg-Editor?
Ja, das ist möglich. Der Gutenberg Block-Editor lädt externe Ressourcen für Embeds (YouTube, Twitter, Vimeo) und kann Google Fonts verwenden. COEP mit require-corp blockiert alle Ressourcen ohne CORP- oder CORS-Header. Verwenden Sie COEP nur im Frontend und nie im Admin-Bereich.
Funktionieren YouTube-Embeds und oEmbeds mit Cross-Origin Headers?
Mit COOP und CORP allein: ja, ohne Einschränkungen. Mit COEP (require-corp): nein — YouTube-Embeds, Twitter-Cards und andere oEmbed-Inhalte werden blockiert, weil sie keinen CORP-Header senden. Verzichten Sie auf COEP, wenn Sie Embeds nutzen.
Soll ich die Header per functions.php oder .htaccess setzen?
Beide Wege funktionieren. functions.php ist WordPress-spezifisch und wird bei Theme-Wechsel übernommen, wenn Sie ein Child-Theme verwenden. .htaccess ist server-seitig und greift auch für statische Dateien. Bei Shared Hosting ohne Serverkonfiguration ist .htaccess oft die einzige Option.
Sind COOP und CORP kompatibel mit gängigen WordPress-Plugins?
COOP (same-origin-allow-popups) und CORP (same-site) sind mit den meisten Plugins kompatibel, da sie nur die Fenster-Isolation und den Ressourcenzugriff kontrollieren. Probleme können bei Plugins auftreten, die Cross-Origin-Popups für Authentifizierung nutzen.
Brauche ich ein Security-Plugin für Cross-Origin Headers?
Nein. Die Konfiguration per functions.php oder .htaccess ist ausreichend und performanter als ein Plugin. Plugins wie "HTTP Headers" oder "Security Headers" können die Header zwar setzen, fügen aber unnötigen Overhead hinzu. Wenige Zeilen Code genügen.
Was ist die sicherste Konfiguration für WordPress ohne Risiko?
COOP mit same-origin-allow-popups und CORP mit same-site — ohne COEP. Diese Kombination schützt vor Window-Manipulation und unkontrolliertem Ressourcenzugriff, bricht aber keine Drittanbieter-Integrationen. Ideal für WordPress-Sites mit Embeds und externen Ressourcen.