Chrome löscht keine Sitzungscookies

188

Ich versuche, Sitzungscookies in Javascript wie folgt zu setzen:

document.cookie = 'name=alex; path=/'

Chrome löscht es jedoch nicht, selbst wenn ich den Browser beende und erneut starte.

Ich habe Firefox und Opera eingecheckt und beide funktionieren wie vorgesehen - sie löschen Sitzungscookies beim Beenden des Browsers.

Ignoriert Chrome nur Ablaufregeln?

Ich habe mehrere Betriebssysteme eingecheckt und festgestellt, dass Sitzungscookies unter Chrome unter Windows XP und Ubuntu entfernt werden, jedoch NICHT unter Mac OSX Lion.

mgs
quelle
1
Es war genau wie in meinem Beitrag, dh ohne Ablauf, nicht sicher über Httponly. Ich versuche nicht, es von Hand zu löschen. Das Problem ist, dass Browser es beim Beenden löschen sollten, Chrome dies jedoch nicht tut.
mgs
>>> und fand heraus, dass Sitzungscookie unter Chrome in Windows XP entfernt wird. Nein. In Windows XP löscht Chrome auch keine Cookies. Ich benutze jetzt Windows XP und habe Ihre Frage gefunden, weil ich das gleiche Problem habe. Der einzige Unterschied besteht darin, dass ich ZF2 verwende und Sitzungsoptionen über das Sitzungspaket festlege. Aber es ist sowieso üblich PHP - ini_set("session.cookie_lifetime", 0)und 'remember_me_seconds' => 1. Aber hilft nicht. Firefox funktioniert einwandfrei, Chrome jedoch nicht.
Grün

Antworten:

222

Dies kann dadurch verursacht werden, dass Chrome dort eingestellt ist, wo Sie aufgehört haben .

Geben Sie hier die Bildbeschreibung ein

Weiterführende Literatur

Jesper
quelle
3
Und ich habe versucht, meinen Kommentar gut mit Zeilenumbrüchen zu formatieren, aber das dumme System hat auch diese Zeilenumbrüche entfernt ... Komm schon, Stackoverflow, mach ein besseres System! Ich verbringe Zeit damit, meine Kommentare lesbar zu machen, um den Lesern besonders hilfreich zu sein, und dann ruinieren Sie sie zuerst, indem Sie dumm glauben, ich sei ein Spammer, und dann Zeilenumbrüche entfernen!
Jesper
2
Hinweis: In Firefox kann genau das gleiche Problem auftreten, wenn Sie die Auswahl "Meine Fenster und Registerkarten vom letzten Mal anzeigen" für das Pulldown-Menü "Wenn Firefox gestartet wird" in den Optionen haben. Aus dem gleichen Grunde. Sitzungscookies werden standardmäßig beibehalten, um den Workflow im Falle eines Browserabsturzes aufrechtzuerhalten.
Webnesto
40
Jep. Chrome und FF unterbrechen aus diesem Grund die Funktion von Sitzungscookies. Für Chrome wurde das Problem gemeldet: code.google.com/p/chromium/issues/detail?id=128513 und als WONTFIX markiert. Offensichtlich gibt Google keine Bedenken hinsichtlich der Einhaltung von Webstandards und Sicherheitslücken in Chrome und FF auch nicht. Siehe FF-Fehler (zumindest nicht geschlossen): bugzilla.mozilla.org/show_bug.cgi?id=443354 Was für ein trauriger Zustand für diese beiden Browser.
Lucian303
4
w3.org/Protocols/rfc2109/rfc2109 : Max-AgeDas Standardverhalten besteht darin, das Cookie beim Beenden des Benutzeragenten zu verwerfen.
Lucian303
2
@ lucian303, obwohl dies wie ein Verstoß gegen Standards aussieht, glaube ich nicht, dass Sie "vom letzten Mal an weiter surfen" können, ohne "Sitzungscookie am Leben zu erhalten". Opera, rekonq und IE9 (über den Link "Letzte Sitzung erneut öffnen" auf der Seite "Neuer Tab") implementieren beispielsweise Ersteres ohne Letzteres. Infolgedessen können solche Browser zwischengespeicherte Seiten anzeigen, die fälschlicherweise anzeigen, dass Sie noch angemeldet sind und / oder das CSRF-Schutz-Token blockiert haben.
Sayap
25

Ich hatte gerade das gleiche Problem mit einem Cookie, das am Ende der Browsersitzung abläuft.

Leider nicht, also habe ich ein bisschen mit den Einstellungen des Browsers gespielt.

Es stellte sich heraus, dass die Funktion, die sich die geöffneten Registerkarten beim Schließen des Browsers merkt, die Ursache des Problems war. (Die Funktion heißt "Beim Start" - "Weiter dort, wo ich aufgehört habe". Zumindest in der aktuellen Version von Chrome).

Dies passiert auch mit Opera und Firefox.

Nikola Kolev
quelle
Dies löste das Problem sofort für mich! Schön zu wissen, warum die Dinge so passieren, wie sie es tun :)
schnelle Reflexe
5
Inakzeptabel. Ich möchte nicht, dass Chrome vergisst, welche Fenster geöffnet waren, da ich Chrome allzu oft versehentlich mit vielen geöffneten Registerkarten beende. (Vielen Dank an OS X, dass ich ein Fenster ohne Fokus scrollen durfte, was mich zu der Annahme veranlasste, dass es Fokus hat. Aber eine andere Geschichte). Wenn ich mich wieder einloggen muss, soll es so sein. Wenn Sie mich nicht abmelden, wenn ich absichtlich kündige, ist es schwierig sicherzustellen, dass ich noch nirgendwo angemeldet bin, was ein großes Sicherheitsproblem sein kann.
Michael
5
Zumindest ist diese Option nicht standardmäßig aktiviert. Diese "Funktion" wird auch in der Google-Hilfe erwähnt : "Chrome stellt auch Ihre Browserdaten und Sitzungscookies wieder her. " IMO sollte dies eine zusätzliche Unteroption unter "Weiter, wo ich aufgehört habe" sein.
MrWhite
Übrigens scheint dies kein "Problem" mehr mit Opera zu sein (Opera 22 getestet, obwohl ich nicht bemerkt habe, dass es sich um ein Problem für mindestens eine oder zwei Versionen handelt). Firefox 29 stellt Sitzungscookies wieder her, wenn das entsprechende Kontrollkästchen "Meine Fenster und Registerkarten vom letzten Mal anzeigen" aktiviert ist (gemäß Dokumentation).
MrWhite
2
@Michael Was nicht viel Sinn macht, da die meisten Websites, die Sitzungen verwenden, es Ihnen nicht erlauben, auf die Seite zurückzukehren, auf der Sie sich befanden, wenn Sie abgemeldet waren. Möchten Sie also, dass der Browser dort fortgesetzt wird, wo Sie aufgehört haben oder nicht?
Deji
21

Ich hatte gerade dieses Problem. Ich habe festgestellt, dass selbst nach dem Schließen meines Browsers viele Chrome-Prozesse ausgeführt wurden. Es stellte sich heraus, dass diese jeweils von meiner Chrome-Erweiterung stammten.

Unter den erweiterten Einstellungen habe ich das Kontrollkästchen deaktiviert 'Continue running background apps when Google Chrome is closed'und meine Sitzungscookies haben ordnungsgemäß funktioniert.

Immer noch ein Problem für uns alle Entwickler, die programmiert haben und erwartet haben, dass Sitzungscookies gelöscht werden, wenn der Benutzer mit dem Surfen fertig ist.

NSjonas
quelle
Normalerweise haben die "Hintergrund-Apps" nichts mit der Persistenz von Sitzungscookies zu tun (es sei denn, Sie haben eine Erweiterung, die sich an Ihre Sitzungscookies erinnert?!). Die Option "Weiter, wo ich aufgehört habe" in den Einstellungen stellt auch Sitzungscookies wieder her (wie in einer anderen Antwort erwähnt).
MrWhite
1
Es funktioniert, nachdem ich diese Option deaktiviert habe, werden meine Sitzungscookies gelöscht!
Walid Ammar
Dies ist in der Tat ein weiterer Grund, warum Sitzungscookies nicht gelöscht werden. Vielen Dank.
L-Four
10

Dies liegt möglicherweise daran, dass Chrome nach dem Schließen des Browsers immer noch im Hintergrund ausgeführt wird. Versuchen Sie, diese Funktion wie folgt zu deaktivieren:

  1. Öffnen Sie chrome: // settings /
  2. Klicken Sie auf "Erweiterte Einstellungen anzeigen ...".
  3. Navigieren Sie zum Abschnitt "System" und deaktivieren Sie "Hintergrund-Apps weiter ausführen, wenn Google Chrome geschlossen ist". Dadurch wird Chrome gezwungen, vollständig zu schließen, und anschließend werden Sitzungscookies gelöscht.

Ich denke jedoch, Chrome sollte frühere Sitzungscookies beim Starten überprüfen und löschen, anstatt sie zu schließen.

Justmyhobby
quelle
10

Ich musste beides, deaktiviert, unter den erweiterten Einstellungen von Chrome:

  • "Führen Sie weiterhin Hintergrund-Apps aus, wenn Google Chrome geschlossen ist."
  • "Weiter dort, wo ich aufgehört habe", "Beim Start"
emottet
quelle
Dies sollte höher gewählt werden, oder die oberste Antwort sollte so bearbeitet werden, dass sie den Punkt "Hintergrund-Apps ausführen" enthält. Das hat mich betroffen. Das Deaktivieren von "Weiter dort, wo ich aufgehört habe" hat das Problem nicht behoben. Ich musste auch "Hintergrund-Apps weiter ausführen, wenn Google Chrome geschlossen ist" deaktivieren. Dann wurden meine Sitzungscookies ordnungsgemäß gelöscht, als ich Chrome schloss.
Matt Welke
Ich denke, dass dies in der Tat die beste Antwort ist.
L-Four
3

Eine einfache Alternative ist die Verwendung des neuen sessionStorage- Objekts. Laut den Kommentaren bleibt sessionStorage zwischen den Neustarts bestehen, wenn Sie "Weiter machen, wo ich aufgehört habe" aktiviert haben.

TimDog
quelle
9
Nein, es bleibt zwischen den Neustarts bestehen, wenn Sie "Weiter, wo ich aufgehört habe" aktiviert haben.
Olli
TimDog: "sessionStorage bleibt zwischen Neustarts bestehen.", @Olli "Nein, es bleibt zwischen Neustarts bestehen". Leute, stimmst du zu oder argumentierst du? Ich verstehe nicht :) Ah, warte, ich verstehe ...
naXa
2

Ich hatte das gleiche Problem mit "document.cookie" in Windows 8.1. Die einzige Möglichkeit, mit der Chrome das Cookie löscht, bestand darin, es aus dem Task-Manager zu schließen (keine wirklich ausgefallene Methode). Daher habe ich beschlossen, die Cookies über das Backend zu verwalten oder etwas zu verwenden wie "js-cookie".

TurKux
quelle
1

Haben Sie versucht, die Hangout-Erweiterung in Google Chrome zu entfernen? weil es Chrom zwingt, weiterzulaufen, selbst wenn Sie alle Fenster schließen.

Ich war auch mit dem Problem konfrontiert, aber es wurde jetzt gelöst.

Salman Ali Khan
quelle
1

Gehe zu chrome://settings/content/cookies?search=cookies

Aktivieren Clear cookies and site data when you quit Chrome .

Hat für mich gearbeitet

Mihai Perju
quelle
-2

Wenn Sie die Domain für das PHP-Sitzungscookie festlegen, scheinen die Browser diese etwa 30 Sekunden lang beizubehalten. Es scheint keine Rolle zu spielen, ob Sie den Tab oder das Browserfenster schließen.

Wenn Sie also Sitzungen mit den folgenden Methoden verwalten, bleibt das Cookie möglicherweise länger als erwartet im Browser hängen.

ini_set("session.cookie_domain", 'www.domain.com');

Die einzige Möglichkeit, das hängende Cookie zu entfernen, besteht darin, die Codezeile zu entfernen, mit der die Domäne des Sitzungscookies festgelegt wird. Achten Sie auch auf die Funktion session_set_cookie_params (). Das Punktpräfix der Domain scheint ebenfalls keinen Einfluss auf das Problem zu haben.

Dies kann ein PHP-Fehler sein, da PHP ein Sitzungscookie (dh PHPSESSID=b855ed53d007a42a1d0d798d958e42c9) im Header sendet, nachdem die Sitzung zerstört wurde. Oder es könnte ein Problem mit der Serverausbreitung sein, aber ich glaube nicht, da mein Test auf einem privaten Server durchgeführt wurde.

SurferJoe
quelle
-2

Ich hatte gerade das Problem, dass Chrome eine Sitzungs-ID speichert, aber ich mag die Idee nicht, die Option zu deaktivieren, um dort fortzufahren, wo ich aufgehört habe. Ich habe mir die Cookies für die Website angesehen und ein Sitzungs-ID-Cookie für die Anmeldeseite gefunden. Das Löschen hat mein Problem nicht behoben. Ich habe nach der Domain gesucht und festgestellt, dass in der Domain ein weiteres Sitzungs-ID-Cookie vorhanden ist. Das manuelle Löschen beider Sitzungs-ID-Cookies hat das Problem behoben, und ich habe den Browser nicht geschlossen und erneut geöffnet, wodurch die Cookies möglicherweise wiederhergestellt wurden.

Lauren Tariel
quelle
-8

Google Chrome hat ein Problem, wenn Sie Cookies auf falsche Weise setzen und deaktivieren. Dies ist PHP-Code. Ich dachte, das gibt dir eine Idee.

Cookie setzen

setcookie('userLoggedIn', 1, 0, PATH);

Falscher Weg und wird nicht funktionieren (Hinweis PATH fehlt)

setcookie('userLoggedIn', 0, time()-3600);

Der richtige Weg behebt das Problem bei Google Chrome

setcookie('userLoggedIn', 0, time()-3600, PATH);
Akash Thapa
quelle
1
Die Frage bezieht sich nicht auf einen falschen Cookie.
John K