Wie kann ich ein Cookie mit Ablaufzeit setzen?

Lesezeit: 3 Minuten

Benutzer-Avatar
Ameise

Ich setze ein Cookie mit JavaScript und es funktioniert gut, aber es dauert nicht die von mir angegebene Ablaufzeit. Es nimmt weiterhin Sitzungswert, unabhängig davon, was ich gebe, unten ist der Code, den ich von hier genommen habe

var now = new Date();
var time = now.getTime();
var expireTime = time + 1000*60;
now.setTime(expireTime);
var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT';
document.cookie = aaa+'='+sStr+';expires="+now.toGMTString()+";path=/';

Ich habe versucht, einen fest codierten Wert anzugeben, aber es wird immer noch als Sitzung im Chrome-Entwicklungstool angezeigt

var tempExp = 'Wed, 31 Oct 2012 08:50:17 GMT';
document.cookie = aaa+'='+sStr+';expires="+tempExp+";path=/';

Irgendeine Idee, was ich falsch mache?

  • Wie überprüfen Sie die Ablaufzeit Ihres Cookies?

    – Polin

    31. Oktober 2012 um 9:52 Uhr

  • polin: Drücken Sie in Chrome F12 (alternativ gehen Sie zu Tools-> Developer Tools). Es öffnet sich der Rahmen unten, dort können Sie es überprüfen.

    – Ameisenbiene

    31. Oktober 2012 um 10:02 Uhr

  • Ich weiß, wie es kommt. Meine Frage ist, können Sie die Ablaufzeit sehen. Ich habe es mit console.log(document.cookie) versucht, aber dort können Sie das Cookie sehen, nicht die Ablaufzeit

    – Polin

    31. Oktober 2012 um 10:11 Uhr

  • Ja, in der Spalte „Läuft ab“ (nach der Pfadspalte) wird das Datum und die Uhrzeit angezeigt, wann das Cookie abläuft. In meinem Fall wird jedoch „Sitzung“ angezeigt, was bedeutet, dass sie abläuft, wenn ich den Browser schließe

    – Ameisenbiene

    31. Oktober 2012 um 11:02 Uhr


Benutzer-Avatar
Polin

Ich habe die Zeit auf 1000 * 36000 eingestellt.

function display() { 
  var now = new Date();
  var time = now.getTime();
  var expireTime = time + 1000*36000;
  now.setTime(expireTime);
  document.cookie="cookie=ok;expires="+now.toUTCString()+';path=/';
  //console.log(document.cookie);  // 'Wed, 31 Oct 2012 08:50:17 UTC'
}

Ablauf

  • Eine kleine Erklärung wäre nett, was macht der Code eigentlich und was bedeutet hier “1000*360000”?

    – Esko

    20. Januar 2021 um 10:59 Uhr

  • Beim Testen in localhost lehnte Firefox das Ablaufdatum ab, da SameSite nicht gesetzt ist und daher standardmäßig auf none gesetzt ist. Festlegen von document.cookie = ${YOUR_COOKIE_OR_WHATEVER};${THE_EXPIRE_TIME_OR_WHATEVER};SameSite=lax Nähte, um das Problem zu lösen.

    – Hank W

    8. Dezember 2021 um 17:40 Uhr


Benutzer-Avatar
Bhupsa

document.cookie = "cookie_name=cookie_value; max-age=31536000; path=/";

Setzt den Wert für ein Jahr.

  • Was macht + date + (days * 86400000) tun?

    – Asim KT

    24. Juli 2017 um 12:02 Uhr

  • + bevor eine Variable nur den numerischen Wert eines Objekts zurückgibt. In diesem Fall, +date ist äquivalent zu d.valueOf()was auch der Wert ist, der von zurückgegeben wird date.getTime().

    – Shaun Cockerill

    1. Februar 2018 um 2:20 Uhr

Benutzer-Avatar
Lucio Zambon

Ihr Browser ist möglicherweise so konfiguriert, dass er nur Sitzungscookies akzeptiert; In diesem Fall wird jede Ablaufzeit von Ihrem Browser in eine Sitzung umgewandelt. Sie können diese Einstellung Ihres Browsers ändern oder einen anderen Browser ohne eine solche Konfiguration ausprobieren

Benutzer-Avatar
gabriele m

Ich verwende eine Funktion, um Cookies mit einer benutzerdefinierten Ablaufzeit in Tagen zu speichern:

// use it like: writeCookie("mycookie", "1", 30)
// this will set a cookie for 30 days since now
function writeCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

Benutzer-Avatar
pmccaffrey6

Ich möchte Polins Antwort unterstützen und nur eine Sache hinzufügen, falls Sie immer noch nicht weiterkommen. Dieser Code funktioniert sicherlich, um eine bestimmte Ablaufzeit für Cookies festzulegen. Ein Problem, das Sie möglicherweise haben, ist, dass Sie Chrome verwenden und über “http://localhost…” oder “file://”, speichert Chrome keine Cookies. Die einfache Lösung dafür besteht darin, einen einfachen HTTP-Server zu verwenden (wie den HTTP-Server des Knotens, falls Sie dies noch nicht getan haben) und explizit als zu Ihrer Seite zu navigieren “http://127.0.0.1” In diesem Fall WIRD Chrome Cookies für die lokale Entwicklung speichern. Dies hat mich ein wenig aufgelegt, da Ihr Ablaufschlüssel, wenn Sie dies nicht tun, einfach den Wert “Sitzung” hat, wenn Sie ihn in der Konsole untersuchen oder in den Entwicklungstools.

1010250cookie-checkWie kann ich ein Cookie mit Ablaufzeit setzen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy