Steffen Gerlach: Kurzlebige Cookies

Hallo,

Mir scheint irgendeine Feinheit im Zusammenhang mit Cookies entgangen zu sein. Keines der Cookies, die ich zu setzen versuche, überlebt das Beenden der Browser-Sitzung. Das Problem betrifft alle Browser, mit denen ich getestet habe, und ist auch unabhängig davon, ob die HTML-Seite auf meiner Festplatte oder im WWW liegt.

Folgende Testseite meldet beim ersten Aufruf nach dem Start des Browsers immer "no cookie":

<html>
<head>
<script language="JavaScript">
<!--
if (document.cookie)
  alert(document.cookie);
else
  alert("no cookie");
document.cookie = "I'm a cookie!";
//-->
</script>
</head>

<body>
</body>
</html>

Solange der Browser dann läuft, bleibt das Cookie erhalten. Ich bin einigermaßen ratlos. Vielen Dank für Eure Hilfe.

Gruß
Steffen

  1. Hi!

    Mir scheint irgendeine Feinheit im Zusammenhang mit Cookies entgangen zu sein. Keines der Cookies, die ich zu setzen versuche, überlebt das Beenden der Browser-Sitzung.

    Ja, das ist das Standard Behaviour, wenn Du kein Verfallsdatum fuer die Cookies angibst. Kurz gesagt geht das mit

    var TIME_TO_LIVE = 365 * 24 * 3.6E6;    // one year (=3.1536E10)
      expire = new Date();
      expire.setTime(expire.getTime() + TIME_TO_LIVE);
      document.cookie = "I'm a cookie; EXPIRES=" + expire.toGMTString();

    Naeheres erfaehrst Du auf http://developer.netscape.com/docs/manuals/js/client/jsref/document.htm#1193577 und http://developer.netscape.com/docs/manuals/js/client/jsguide/cookies.htm.

    Gegen eine schreibgeschuetzte cookies.txt hilft das natuerlich auch nichts. ;-)

    Calocybe - jetzt mit fetten 19 Zoll! :-)

  2. Hallo,
    hilft dir das?
    <selfhtml>
    Beim Setzen eines Cookies können Sie außerdem einen Verfallszeitpunkt angeben. Wenn der Verfallszeitpunkt erreicht ist, löscht der Browser den Cookie selbständig. Notieren Sie dazu eine Anweisung wie:

    document.cookie += "expires=" + cookieDate(time + 1000*60*60*24*5)

    Damit wird der Cookie um einen Eintrag der Form expires= erweitert. Eine spezielle Funktion cookieDate() erlaubt es, einen Verfallszeitpunkt zu setzen. Übergeben Sie der Funktion als Parameter am besten time (der aktuelle Zeitpunkt) plus die Anzahl Millisekunden ab dem aktuellen Zeitpunkt, nach denen der Cookie gelöscht werden soll. Dazu können Sie wie im Beispiel eine Multiplikationskette übergeben: 1000 Millisekunden sind eine Sekunde, mal 60 macht eine Minute, mal 60 macht eine Stunde, mal 24 ein Tag, und mal 5 macht fünf Tage
    </selfhtml>