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.
@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.
Nicht länger. Chrome 80.0.3987.122 unter Win10 kann heruntergefahren werden. Wenn Sie es aktivieren, wird die Sitzung wiederhergestellt. Mit anderen Worten, Sie müssen sich abmelden, um sicherzustellen, dass das Konto geschlossen ist.
Antworten:
Wenn Sie verwenden
setcookie
, können Sie entweder die Ablaufzeit auf einstellen0
oder den Parameter einfach weglassen. Das Cookie läuft dann am Ende der Sitzung ab (dh wenn Sie den Browser schließen).quelle
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.
quelle
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=/";
quelle
Ende der Benutzersitzung bedeutet, dass der Browser heruntergefahren wird.
Lesen Sie dies: http://en.wikipedia.org/wiki/HTTP_cookie#Expires_and_Max-Age
quelle