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.

WordPress · Schritt für Schritt

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.

1 Schritt 1 von 3

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.

functions.php Basis-Konfiguration
// 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');
Warum 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.

Alternative: .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.

2 Schritt 2 von 3

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.

functions.php Empfohlen
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.

Verwenden Sie ein Child-Theme für die functions.php-Änderungen. So bleiben die Header auch nach Theme-Updates erhalten.
3 Schritt 3 von 3

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.

COEP bricht auf WordPress: YouTube-Embeds, Google Fonts, Google Maps, Twitter-Cards, Vimeo-Player und viele Plugin-Ressourcen. Verzichten Sie auf COEP, es sei denn, Sie benötigen SharedArrayBuffer.
.htaccess Alternative
<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>
Terminal Verifizieren
# 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
Alternative: 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.