Wann läuft ein Cookie mit der Ablaufzeit "Am Ende der Sitzung" ab?


74

Es gibt einen Sitzungscookie mit Ablaufzeit, der "Am Ende der Sitzung" lautet. Wann genau läuft es ab oder wird es für immer leben?


3
Dies liegt ganz beim Benutzeragenten, dh beim Browser des Benutzers. In der Regel geschieht dies jedoch, wenn der Browser geschlossen wird.
Caw

Antworten:


47

Wenn Sie verwenden setcookie, können Sie entweder die Ablaufzeit auf einstellen 0oder den Parameter einfach weglassen. Das Cookie läuft dann am Ende der Sitzung ab (dh wenn Sie den Browser schließen).


Der Fall ist: - Ich habe zwei Seiten, die unterschiedliche Cookies verwenden. Eine läuft in 30 Minuten ab und eine andere auf Am Ende der Sitzung. Angenommen, beide Cookies sind gerade aktiv, aber ich sehe eine Seite, für die wir 30 Minuten festgelegt haben, und bin eine Weile nicht auf eine andere Seite gegangen. Was bedeutet das? Ist es so etwas wie ein schließender Browser für die Seite, die ich nicht gesehen habe?
Shakti Singh

6
Bitte verzeihen Sie mir, ich verstehe die Frage nicht: / Seite A hat ein Cookie mit Ablaufzeit = 0, Seite B hat ein Cookie mit Ablaufzeit = 30 Minuten. Dies bedeutet, dass beim Schließen Ihres Browsers Cookie A gelöscht wird, Cookie B jedoch erhalten bleibt. Wenn Sie den Browser nicht innerhalb von 30 Minuten schließen, läuft Cookie B ab, Cookie A bleibt jedoch aktiv. Selbst wenn Cookie B abläuft, während Sie Seite B anzeigen, geschieht in den meisten Fällen nichts, da das Cookie wahrscheinlich neu erstellt wird, sobald Sie die Seite neu laden oder eine andere Seite auf derselben Site besuchen. Ich hoffe, zumindest ein Teil davon beantwortet Ihre Frage: |
Mingos

@mingos Ich frage mich, warum ich den Cookie verliere, wenn ich nur den Tab schließe. Ich dachte, es sollte sterben, wenn Sie den Browser schließen?
IPSDSILVA

Beachten Sie, dass ich die ursprüngliche Antwort vor 10 Jahren gepostet habe. Damals war die Prozesstrennung zwischen Browser-Registerkarten nicht in allen Browsern vorhanden (ich glaube, damals hatte nur Chrome diese Funktion, obwohl ich mir bei Firefox nicht 100% sicher bin). Das Schließen des Browsers war also im Wesentlichen gleichbedeutend mit "Beenden des Prozesses zum Ausführen des Browsers", während das Schließen des Tabs nicht garantiert war. Heutzutage ist ein Tab ein separater Prozess, und ich würde eine Wette riskieren, dass dies in Ihrem Fall der Fall ist: Wenn Sie den Tab schließen, beenden Sie den Prozess, sodass temporäre Daten und Sitzungsspeicher gelöscht werden.
Mingos

Um weiterzumachen: Ich rate nur, also nimm meinen obigen Kommentar mit einem Körnchen Salz. Alles in allem können wir uns darauf einigen, dass die "Durchsuchungssitzung" zwischen Browsern und Geräten nicht klar definiert ist und daher auf unvorhersehbare Weise implementiert wird. Bitte vergleiche mit den anderen Antworten in diesem Thread.
Mingos

64

Cookies, die am Ende der Sitzung ablaufen, verfallen aus Sicht des Benutzers unvorhersehbar!

Unter iOS mit Safari verfallen sie, wenn Sie Apps wechseln!

Unter Android mit Chrome verfallen sie nicht, wenn Sie den Browser schließen.

Auf Windows-Desktops mit Chrome verfallen sie, wenn Sie den Browser schließen. Dies ist nicht der Fall, wenn Sie den Tab Ihrer Website schließen. Dies ist der Fall, wenn Sie alle Registerkarten schließen. Sie verfallen auch nicht, wenn andere Browserfenster geöffnet sind. Wenn Benutzer Web-Apps als Fenster ausführen, wissen sie möglicherweise nicht einmal, dass es sich um Browserfenster handelt. Das Leben Ihres Cookies hängt also davon ab, was der Benutzer mit einer scheinbar nicht verwandten App macht.


1
Das ist nicht meine Beobachtung auf iOS (10.2.1)
Myster

1
@Myster danke für die Beobachtung. Meine Beobachtungen stammten aus einer älteren Version. Was macht iOS 10.2.1?
James

1
Ich möchte nur hinzufügen, dass es auf Chrome für Mac nicht abläuft. obwohl ich es als "weiter dort, wo du gegangen bist" eingestellt habe. Aber ich habe die Browser-Registerkarte für diese Domain bereits geschlossen und Chrome neu gestartet. Das von mir gesetzte Sitzungscookie ist noch vorhanden.
bonbon.langes

Das ist nützlich zu wissen.
Raimonds

Gibt es eine gute Website, die das unterschiedliche Verhalten dokumentiert?
Benedikt

13

Nur um die Antwort der Mingos zu korrigieren:

Wenn Sie die Ablaufzeit auf 0 setzen, wird das Cookie überhaupt nicht erstellt. Ich habe dies zumindest in Google Chrome getestet, und wenn es auf 0 gesetzt wurde, war dies das Ergebnis. Der Cookie läuft vermutlich sofort nach der Erstellung ab.

Um ein Cookie so zu setzen, dass es am Ende der Browsersitzung abläuft, lassen Sie den Ablaufparameter einfach ganz aus.

Beispiel:

Anstatt:

document.cookie = "cookie_name=cookie_value; 0; path=/";

Einfach schreiben:

document.cookie = "cookie_name=cookie_value; path=/";

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.