Referrer-Policy in Contao konfigurieren
Referrer-Policy in Contao aktivieren — per Symfony EventSubscriber oder .htaccess. Mit Prioritätssteuerung, Verifizierung und häufigen Fehlern.
Referrer-Policy in Contao
Referrer-Policy kontrolliert, welche Referrer-Informationen der Browser bei Navigation und Ressourcen-Anfragen mitsendet. Ohne Policy sendet der Browser die vollständige URL — inklusive Query-Parameter mit Session-Tokens, Suchbegriffen oder internen Pfaden — an Drittanbieter-Server. Mit 10 von 166 Punkten im Wolf-Agents Web Security Check ist dieser Header besonders für den Datenschutz relevant.
In Contao setzen Sie Referrer-Policy über einen Symfony EventSubscriber oder die public/.htaccess. Der empfohlene Wert ist strict-origin-when-cross-origin — ein Kompromiss zwischen Datenschutz und Funktionalität. Bei Cross-Origin-Requests wird nur die Origin (Domain) gesendet, bei Same-Origin die volle URL. Für maximalen Datenschutz verwenden Sie no-referrer, allerdings bricht dies Affiliate-Tracking und einige Analytics-Referrer.
Der Wolf-Agents Web Security Check prüft Ihren Referrer-Policy-Header und vergibt bis zu 10 Punkte. Werte wie no-referrer oder strict-origin-when-cross-origin erhalten die volle Punktzahl, während unsafe-url oder fehlende Policy zu Abzügen führen.
Referrer-Policy-Implementierung in Contao
Der EventSubscriber ist der empfohlene Weg — er arbeitet unabhängig vom Webserver, überlebt Contao-Updates und wird durch Symfonys Dependency-Injection automatisch registriert. Achten Sie auf die Subscriber-Priorität: Contao-Extensions (wie Analytics- oder Marketing-Bundles) können eigene Referrer-Policies setzen. Eine negative Priorität stellt sicher, dass Ihr Subscriber nach dem Contao-Core, aber vor Extensions ausgeführt wird.
<?php
// src/EventSubscriber/ReferrerPolicySubscriber.php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class ReferrerPolicySubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents(): array {
// Priorität -10: nach Contao-Core, vor Extension-Subscribern
return [KernelEvents::RESPONSE => ['onResponse', -10]];
}
public function onResponse(ResponseEvent $event): void {
if (!$event->isMainRequest()) {
return;
}
$response = $event->getResponse();
$response->headers->set(
'Referrer-Policy',
'strict-origin-when-cross-origin'
);
}
} Auf Shared Hosting ohne Composer-Zugriff nutzen Sie die .htaccess als Fallback. Wichtig: Verwenden Sie nur einen der beiden Wege, nicht beide gleichzeitig — sonst kann der Header doppelt gesetzt werden.
# public/.htaccess — Referrer-Policy
<IfModule mod_headers.c>
Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>
# Werte-Optionen (von streng nach liberal):
# no-referrer — kein Referrer (bricht Affiliate-Links)
# strict-origin-when-cross-origin — empfohlen (guter Kompromiss)
# same-origin — Referrer nur bei Same-Origin
# no-referrer-when-downgrade — Browser-Default Nach jeder Änderung am EventSubscriber: vendor/bin/contao-console cache:clear --env=prod
Verifizierung
Nach der Konfiguration prüfen Sie den Header per curl auf verschiedenen Seitentypen. Achten Sie besonders darauf, dass der Header genau einmal erscheint — doppelte Header (durch .htaccess und EventSubscriber gleichzeitig) können zu inkonsistentem Browser-Verhalten führen.
# 1. Cache leeren
vendor/bin/contao-console cache:clear --env=prod
# 2. Header prüfen
curl -sI https://ihre-domain.de | grep -i referrer-policy
# Erwartete Ausgabe:
# referrer-policy: strict-origin-when-cross-origin
# 3. Verschiedene Seitentypen testen
curl -sI https://ihre-domain.de/news.html | grep -i referrer-policy
curl -sI https://ihre-domain.de/kontakt.html | grep -i referrer-policy
# 4. Prüfen ob Header doppelt gesetzt wird
curl -sI https://ihre-domain.de | grep -ci referrer-policy
# 1 (muss 1 sein, nicht 2)
# 5. Wolf-Agents Web Security Check: Referrer-Policy (10 Punkte)
Testen Sie auch das Verhalten in den Browser DevTools: Navigieren Sie von Ihrer Contao-Seite zu einer externen URL und prüfen Sie im Network-Tab, welcher Referrer-Header gesendet wird. Bei strict-origin-when-cross-origin sollte nur die Domain erscheinen.
Häufige Fehler bei Referrer-Policy in Contao
contao-console cache:clear vergessen
Änderungen am EventSubscriber werden erst nach vendor/bin/contao-console cache:clear --env=prod wirksam. Symfony cached Service-Definitionen — ohne Cache-Invalidierung wird der alte (oder gar kein) Subscriber verwendet.
Contao-Extension überschreibt Referrer-Policy
Analytics- oder Marketing-Extensions können eine lockerere Referrer-Policy setzen. Prüfen Sie die Subscriber-Priorität mit vendor/bin/contao-console debug:event-dispatcher kernel.response und passen Sie die Priorität an, damit Ihr Subscriber zuletzt ausgeführt wird.
no-referrer bricht Affiliate-Tracking
no-referrer entfernt alle Referrer-Informationen — Affiliate-Programme und Analytics-Tools erhalten keine Herkunftsinformationen mehr. Nutzen Sie strict-origin-when-cross-origin als Kompromiss, der die Domain sendet aber den vollständigen Pfad verbirgt.
Doppelter Header durch .htaccess und EventSubscriber
Wenn sowohl .htaccess als auch der EventSubscriber den Header setzen, erscheint der Wert doppelt. Nutzen Sie nur einen der beiden Wege. Prüfen Sie mit curl -sI | grep -ci referrer-policy ob der Header mehrfach vorkommt.
Compliance-Relevanz
Die Referrer-Policy ist ein direkter Datenschutz-Mechanismus. Ohne diesen Header können interne URLs, Suchbegriffe und Session-Parameter an externe Dienste übermittelt werden. Besonders bei Contao-Seiten mit internen Bereichen oder E-Commerce-Funktionen ist die Kontrolle des Referrer-Headers essentiell.
Wie steht Ihre Domain bei Referrer-Policy?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.