Zur Navigation

htaccess / Matomo für 2 Websites

1 Clemens-XS

Schon seit über einem Jahr versuche ich, die htaccess-Dateien für meine beiden Joomla-Websites und deren Verbindung zu meiner Matomo-Analytic zum Funktionieren zu bringen – Leider vergeblich.

Website 1: lebenslust-jetzt.de
Website 2: clemens-psychotherapie-weinheim.de
Matomo (für beide Sites): matomo.lebenslust-jetzt.de

In Website 1 ist in Joomla CORS für den Zugriff von Website 2 angelegt.

In Matomo ist CORS für beide Websites angelegt.

In Website 1 und 2 ist in der htaccess angelegt:
Header set Cross-Origin-Opener-Policy "require-corp"


Firefox mit den AddOns uBlockOrigin und uBlockMatrix reagiert wie folgt:
Die folgenden Ergebnisse gelten unabhängig (!!!) von der Firefox-Einstellung "do not track" sowie unabhängig von "streng" eingestelltem Browser-Datenschutz.

Wird die Website 1 in Firefox geöffnet, so muss lediglich uBlockOrigin deaktiviert werden, damit das MatomoScript ausgeführt wird.
Wird die Website 2 in Firefox geöffnet, so müssen beide AddOns deaktiviert werden, damit Matomo.js geladen wird.



Der Brave-Browser (Chrome) mit den AddOns uBlockOrigin und uBlockMatrix verhält sich anders:

Sobald der Tracker-Schutz von Brave aktiviert ist, kann weder bei Website 1 noch bei Website 2 das Matomo-Script geladen werden.

Wird bei deaktiviertem Trackerschutz für Website 1 lediglich uBlockOrigin aktiviert, so wird das auf deren Subdomain laufende Matomo geblockt.
Wird bei deaktiviertem Trackerschutz für Website 1 lediglich uMatrix aktiviert, so wird das MatomoScript ausgeführt.
Gleiches gilt für die Website 2


Meine Frage:
Habe ich in der htaccess meiner Website 1 Fehler, die das Laden und Ausführen von Matomo.js von der Subdomain trotz CORP / CORS verhindern?

Hier die htaccess für Website 1:

<IfModule mod_headers.c>
Header always set Content-Security-Policy "frame-ancestors 'self' https://clemens-psychotherapie-weinheim.de https://matomo.lebenslust-jetzt.de"
Header set X-Robots-Tag "index, follow"
Header set X-Permitted-Cross-Domain-Policies "none"
Header set Referrer-Policy "origin-when-cross-origin"
Header set Cross-Origin-Opener-Policy "require-corp"
Header always set X-Content-Type-Options "nosniff"
Header always set Cross-Origin-Resource-Policy "same-origin"
Header always set Strict-Transport-Security "max-age=63072000"
SetEnv modHeadersAvailable true
</IfModule>


Ich hoffe, dass ich hier der Lösung näher kommen kann. :-)

16.01.2025 18:19

2 Jörg Kruse

Die Addons uBlockOrigin und uBlockMatrix blocken vermutlich ganz einfach Scripte, in deren URL sich das Keyword "matomo" befindet? CORS ist hierbei denke ich weniger von Belang.

Auf Firefox blockiert uBlockOrigin das Script möglicherweise nicht, da es nicht von einer völlig fremden Domain, sondern von einer Subdomain geladen wird - vielleicht konfigurierbar?

Der Do-not-Track-Header wird von Matomo selbst berücksichtigt, falls die Unterstützung in den Einstellungen unter Privatsphäre aktiviert ist.

Header always set Content-Security-Policy "frame-ancestors 'self' https://clemens-psychotherapie-weinheim.de https://matomo.lebenslust-jetzt.de"

Mit der Direktive frame-ancestors definierst du "Eltern"-Websites, die die Seiten auf lebenslust-jetzt.de framen dürfen. Um zu bestimmen, von welchen Websites Scripte ausgeführt werden, benötigst du die Direktiven script-src und connect-src. Da aber die Direktive default-src fehlt, ist abgesehen vom Framing eh alles erlaubt.

Header set Cross-Origin-Opener-Policy "require-corp"

Die Direktive "require-corp" gehört eigentlich zum Header Cross-Origin-Embedder-Policy?

Funktioniert das Tracking (ohne Adblocker) gar nicht oder nur eingeschränkt?

Matomo übermittelt bereits die notwendigen Header für Cross-Domain-Requests:

access-control-allow-credentials: true
access-control-allow-origin: https://lebenslust-jetzt.de

Für bestimmte Funktionen wie Heatmaps müssten auch auf lebenslust-jetzt.de ein entsprechender Access-Control-Allow-Origin-Header für https://matomo.lebenslust-jetzt.de gesetzt werden:

https://matomo.org/faq/heatmap-session-recording/how-do-i-fix-cors-issue-for-heatmap-and-session-recording/

16.01.2025 20:06 | geändert: 17.01.2025 09:34

3 Clemens-XS

Ich danke herzlich für Ihre schnelle Antwort!

Betreffend "frame-ancestors":
Danke für Ihre Erklärung! Diese Zeile hatte ich eingefügt, damit der Praxisbuchungskalender und dessen Scripte, die auf Website 1 gehostet sind und laufen, auch in einem iFrame auf Website 2 funktionieren. Dies gelingt nur teilweise, sodass die letzten Buchungsschritte doch nicht ausgeführt werden können. – Der Entwickler dieser Extension konnte oder wollte mir da auch nicht weiter helfen, sodass ich dieses Vorhaben aufgegeben habe.

Dank Ihres Hinweises kann ich diese nun unnötige Zeile löschen.

Da ich auf der Website 2 iFrames mit Inhalt aus Website 1 anzeigen lassen möchte, hatte ich in der htaccess der Website 2 ebenfalls die Zeile in die htaccess eingefügt:

Header always set Content-Security-Policy "frame-ancestors 'self' https://lebenslust-jetzt.de"

Diese Zeile reichte aber nicht aus, um den Inhalt im iFrame anzeigen zu können! Es bedurfte einer weiteren Zeile:

Header set Content-Security-Policy "frame-src https://lebenslust-jetzt.de"

Betr. Cross-Origin-Embedder-Policy
Da finde ich interessant, dass die von mir falsch deklarierte Regel nicht zu einer Fehlermeldung oder zur Nicht-Funktion geführt hat.
Ich verwende die "Opener"-Regel in der htaccess von Website 2, damit dort – wie oben beschrieben – in iFrames Inhalt von Website 1 angezeigt werden kann.
Sobald ich die Regel auf "Embedder-Policy" ändere, bleibt der iFrame leer.

Betr. Cross-Origin-Embedder-Policy für Matomo auf Website 1
In Matomo habe ich den zu trackenden Websites CORS zugewiesen. Also müsste das funktionieren. Eine Heatmap oder andere Tracking-Erweiterungen nutze ich in Matomo nicht. In Matomo habe ich übrigens "do-not-track beachten" deaktiviert.

Wenn ich in meinem ersten Post schrieb, dass "Matomo.js ausgeführt wird" oder "geladen wird", dann meine ich damit, dass das Tracking real ausgeführt wird und funktioniert. (Ich sehe, wie wichtig eine präzise Ausdrucksweise ist :-)

Könnte die zusätzliche Regel:
Header set Content-Security-Policy "script-src 'self' https://matomo.lebenslust-jetzt.de"
ein zuverlässigeres Tracking bewirken? Diese Regel ist allerdings, so wie sie da jetzt steht, fehlerhaft oder ergänzungsbedürftig, weil nach deren Einfügen viele Scripte der zur htaccess gehörigen Website nicht mehr funktionieren.

Übrigens: Ich lade auf meinen Websites grundsätzlich nichts von anderen Quellen herunter wie z.B. Google-Fonts oder Scripte von CDNs und nutze auch kein Cloudflare.

17.01.2025 11:51

4 Jörg Kruse

Sobald ich die Regel auf "Embedder-Policy" ändere, bleibt der iFrame leer.

Was ist, wenn dieser Header komplett weggelassen wird?

Auf welcher Unterseite befindet sich denn der Iframe?

Könnte die zusätzliche Regel:
Header set Content-Security-Policy "script-src 'self' https://matomo.lebenslust-jetzt.de"
ein zuverlässigeres Tracking bewirken? Diese Regel ist allerdings, so wie sie da jetzt steht, fehlerhaft oder ergänzungsbedürftig, weil nach deren Einfügen viele Scripte der zur htaccess gehörigen Website nicht mehr funktionieren.

Ja, wie ich oben geschrieben hatte, war abgesehen vom Framing eh alles erlaubt. Wenn jetzt script-src definiert wird, dann funktionieren alle Scripte nicht mehr, die von der Direktive nicht erfasst werden. Dazu zählen auch alle Inline-Scripte. Von daher würde ich hier erst einmal nichts weiter definieren. Ich hätte dazu schreiben sollen, dass die aktuelle Content-Security-Policy kein Script behindert :)

Funktioniert das Tracking denn grundsätzlich, wenn Addons wie uBlockOrigin und uBlockMatrix im Browser deaktiviert sind? wenn ja, liegt das Problem ausschließlich bei diesen Addons, dagegen kann man mit irgendwelchen Headern in der .htaccess Datei wenig ausrichten.

17.01.2025 12:51 | geändert: 17.01.2025 12:52

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]