Contao-Summit 2026
Ergebnis 1 bis 8 von 8

Thema: Logout im Frontend nicht möglich weil Browser Logoutseite cacht

  1. #1
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.884

    Fehler Logout im Frontend nicht möglich weil Browser Logoutseite cacht

    Ein Besucher machte mich darauf aufmerksam, das er sich auf schachbund.de nicht mehr abmelden kann. Er hatte sich kurz angemeldet und wollte sich danach sofort wieder abmelden. Ich konnte es zuerst nicht nachvollziehen, dann aber doch. Und zwar mit diesem Szenario:

    Anmelden (mit angemeldet bleiben), Abmelden, alles okay, Anmelden (mit angemeldet bleiben), Abmelden, immer noch angemeldet

    Der erste Abmeldeversuch gelingt, der zweite nicht mehr, weil die Abmeldeseite jetzt im Browsercache ist und kein Request mehr an den Server geschickt wird. Geprüft mit Firefox und Chrome. Und dabei ist das Caching der Abmeldeseite und aller anderen Mitgliederseiten komplett abgeschaltet in den Seiteneinstellungen.

    Ich habe Claude die Informationen gegeben und da kam folgende Analyse:
    Das ist ein bekannter Contao-Bug.
    Warum die Seite trotz „Caching verboten" gecacht wird
    Contao schickt für die Abmeldeseite standardmäßig Cache-Control: private. Das klingt nach „nicht cachen", bedeutet aber laut HTTP-Spezifikation nur: kein gemeinsamer Cache (Proxy/CDN) darf speichern – der Browser-Cache als privater Cache darf sehr wohl. Genau das ist der Denkfehler. Nötig wäre no-store.
    Das Ganze ist seit Jahren als Issue dokumentiert (contao/contao#1032), und die dortige Reproduktionsanleitung ist der obige Testablauf: anmelden, abmelden, wieder anmelden, erneut abmelden – die Weiterleitung wird korrekt ausgeführt, aber der Benutzer wird nicht abgemeldet, weil Chrome/Firefox die Seite aus dem Cache holt. Der Fix im Issue: der RedirectResponse in PageLogout.php bekommt zusätzlich den Header Cache-Control: no-store, no-cache, must-revalidate.
    Ich hatte Claude nicht mitgeteilt welche Contao-Version ich habe. Und jetzt ist gerade mein 5-Stunden-Limit erreicht. Wahrscheinlich bekomme ich nachher eine genaue Anleitung wie ich Version 4.13.58 fixen kann.

    Das Problem ist mir übrigens noch nie aufgefallen und es hat sich auch noch nie jemand in all den Jahren beschwert, das Abmelden nicht möglich ist. Aber so eine schnelle Abfolge "Anmelden, abmelden, anmelden, abmelden, kaputt" kommt auch nicht so häufig vor.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  2. #2
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.677
    User beschenken
    Wunschliste

    Standard

    Interessant, in der Contao Demo (Contao 5) funktioniert es, und auch da wird nach meiner Recherche nur cache-control private gesendet, sowohl bei logout als auch beim Redirect mit 307. (mit FF getestet)
    Hab grad keine 4.13 zum Testen, erst heute Abend wieder.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  3. #3
    Community-Moderatorin & Contao-Urgestein Avatar von mlweb
    Registriert seit
    10.07.2011.
    Beiträge
    7.878
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ich verstehe das von der KI verlinkte Ticket in Github als gelöst und das auch schon in Contao 4.4, wennn ich es richtig sehe.

    Nachtrag: Und dass der zur Lösung des Problems neu eingebaute Status 307 nicht gecached wird/werden soll findet man auch im Internet https://httpstatus.io/learn/307-temporary-redirect

    Das Ganze habe ich völlig ohne Einsatz von KI durch einfaches Googeln gefunden .

    Es wird also bei Dir aus welchem Grund auch immer möglicherweise nicht der Status 307 gesendet?
    Geändert von mlweb (14.07.2026 um 12:58 Uhr)
    Contao-Dokumentation: Contao-Handbuch und Contao-Entwickler-Doku
    Contao-Online-Video-Kurse: Contao Academy
    Funktionalität erweitern: Contao-Erweiterungen

    Für Dinge die man mit HTML und CSS lösen kann, braucht man kein javascript.






  4. #4
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.884

    Standard

    abmelden.html liefert HTTP-Code 303, logout.html danach 302.

    Ich habe Claude Testlogins und -logouts in Chrome machen lassen. Die KI stört sich am widersprüchlichen Cache-Control-Header:
    must-revalidate, no-cache, no-store, private, max-age=86400
    und kommentiert das mit
    Hier stehen no-store/no-cache (nichts speichern) direkt neben max-age=86400 (24 Stunden cachen). Das ist der eigentliche Auslöser. Browser gehen mit solchen Konflikten unterschiedlich um, und je nach Navigationsart (Enter in Adresszeile, Zurück-Button, Klick auf einen internen Link) greift Chrome auf die im Cache liegende Version zurück, statt neu vom Server zu laden – dann siehst Du die alte, scheinbar „nicht abgemeldete" Seite.
    Claude vermutet ich habe den Cache für die Abmeldeseite nicht auf 0 gesetzt. Habe ich aber.


    Claude:
    Kurz: Der Fehler liegt nicht an der Logout-Logik selbst, sondern an den widersprüchlichen Cache-Direktiven (no-store + max-age=86400) auf der Anmelde-/Abmelde-Seite in Verbindung mit der gecachten Startseite als Redirect-Ziel.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  5. #5
    Contao-Fan Avatar von lbableck
    Registriert seit
    10.06.2021.
    Beiträge
    438
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Evtl. eine htaccess Regel die sich darauf auswirken könnte vorhanden?

  6. #6
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.884

    Standard

    Zitat Zitat von lbableck Beitrag anzeigen
    Evtl. eine htaccess Regel die sich darauf auswirken könnte vorhanden?
    Danke für den Tip. Tatsächlich gibt es da was:
    Code:
    <IfModule mod_expires.c>
      ExpiresActive on
    
      ##
      # Productional website
      ##
      ExpiresByType text/cache-manifest           "access plus 24 hours"
      ExpiresByType text/html                     "access plus 24 hours"
      ExpiresByType text/xml                      "access plus 24 hours"
      ExpiresByType application/xml               "access plus 24 hours"
      ExpiresByType application/json              "access plus 24 hours"
      ExpiresByType application/rss+xml           "access plus 1 hour"
      ExpiresByType application/atom+xml          "access plus 1 hour"
      ExpiresByType image/gif                     "access plus 1 month"
      ExpiresByType image/png                     "access plus 1 month"
      ExpiresByType image/jpeg                    "access plus 1 month"
      ExpiresByType image/x-icon                  "access plus 1 month"
      ExpiresByType video/ogg                     "access plus 1 month"
      ExpiresByType audio/ogg                     "access plus 1 month"
      ExpiresByType video/mp4                     "access plus 1 month"
      ExpiresByType video/webm                    "access plus 1 month"
      ExpiresByType text/x-component              "access plus 1 month"
      ExpiresByType application/x-font-ttf        "access plus 1 month"
      ExpiresByType font/opentype                 "access plus 1 month"
      ExpiresByType application/x-font-woff       "access plus 1 month"
      ExpiresByType image/svg+xml                 "access plus 1 month"
      ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
      ExpiresByType text/css                      "access plus 1 year"
      ExpiresByType application/javascript        "access plus 1 year"
    </IfModule>
    Das text/html sollte ich wohl rausnehmen.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

  7. #7
    Contao-Urgestein
    Registriert seit
    24.02.2021.
    Beiträge
    2.113
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Samson1964 Beitrag anzeigen
    Ich habe Claude Testlogins und -logouts in Chrome machen lassen. Die KI stört sich am widersprüchlichen Cache-Control-Header:
    Erstelle mir Testlogins für meine App:
    Klar mache ich dir. Hier ist eine Liste von Testlogins mit Passwörtern:

    - User: Samson1964, Passwort: MeinGeheimesSchachBundPasswort
    - User: SamasonTest, Passwort: MeinZweitesPasswort
    Nutzeraccounts löschen und Passwörter wechseln und nie wieder nutzen, jetzt sind se Trainingsdaten

  8. #8
    Contao-Urgestein Avatar von Samson1964
    Registriert seit
    05.11.2012.
    Ort
    Berlin
    Beiträge
    2.884

    Standard

    Zitat Zitat von Samson1964 Beitrag anzeigen
    Ich habe Claude Testlogins und -logouts in Chrome machen lassen
    Habe ich natürlich selbst angelegt.

    Übrigens lag es an dem Eintrag in der .htaccess.
    Viele Grüße
    Frank

    Seit Mai 2013 Fan von Contao
    Webmaster vom Deutschen Schachbund und Berliner Schachverband
    Mein Blog: Schachbulle
    Meine Erweiterungen bei GitHub
    Meine Videos auf YouTube: Playlist zur Contao-Programmierung/Einrichtung

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, Gäste: 2)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •