Cookie

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Ein Cookie (englisch für Keks) – die Herkunft des Namens ist unbekannt – ist eine von einer Internetseite erstellte Textvariable, die vom Browser gespeichert wird. Cookies bieten Ihnen die Möglichkeit, direkt aus einer HTML-Datei heraus Daten auf dem Rechner des Anwenders zu speichern und beim erneuten Aufruf der gleichen HTML-Datei wieder auszulesen. So kann eine Webseite dynamisch auf gespeicherte Daten reagieren.

Es ist nur möglich, diejenigen Cookies auszulesen, die man selbst gesetzt hat. Eine Virenübertragung durch Cookies ist ausgeschlossen. Es wird eine Variable mit einem zugewiesenen Wert abgespeichert, zum Beispiel Datum und Uhrzeit des letzten Besuchs der Web-Seite. Es können keine Rechnerdaten des Anwenders ausgelesen werden.

Cookies ermöglichen Komfort beim Surfen, etwa durch das Speichern persönlicher Einstellungen oder Warenkörbe, sie können aber auch missbraucht werden um beispielsweise Nutzerprofile zu erstellen.

Technische Details

Ein Cookie besteht aus einem Namen, einem Wert und einigen Verwaltungsinformationen. Der Name muss ein Token gemäß RFC 2616 sein – vereinfacht gesagt: ASCII-Buchstaben und -Ziffern sowie ein paar Sonderzeichen wie '-', '_' oder '.').[1]. Der Wert kann aus den ASCII-Zeichen von 33 bis 126 bestehen, mit Ausnahme der Zeichen ", ,, ; und \. Wenn Sie andere Zeichen verwenden möchten, dann müssen Sie sie codieren, beispielsweise durch URL-Codierung oder base64-Darstellung.

Die Verwaltungsinformationen oder Attribute steuern, für welche Webseiten ein Cookie sichtbar ist, wie lange er gespeichert wird und ob es Beschränkungen für den Zugriff darauf gibt. Die Attribute werden beim Setzen eines Cookies festgelegt, können später aber nicht mehr gelesen werden. Attribute werden angegeben, indem man sie durch Semikolon getrennt hinter den Cookiewert schreibt.

Das wichtigste Attribut ist die Domain, für die der Cookie gilt. Standardmäßig ist das die Domain, von der die Seite geladen wurde, es kann aber auch eine übergeordnete Domain sein (also zum Beispiel selfhtml.org statt wiki.selfhtml.org). Eine Domainangabe ohne Punkt ist nur zulässig, wenn es sich dabei nicht um eine registrierte Top-Level Domain handelt. Ein Punkt zu Beginn der Domain-Angabe (z.B. ".selfhtml.org") wird ignoriert.

Eine weiteres Attribut ist die Gültigkeitszeit. Wird es nicht gesetzt, lebt ein Cookie nur so lange, wie die Seite geladen ist (ein Session-Cookie). Man kann aber auch ein maximales Alter (Max-Age) oder ein Verfallsdatum (Expires) angeben.

Setzen eines Cookies mit Domain und Gültigkeitsdauer
   Set-Cookie: benutzer=Stefan M%C3%BCnz; Domain=selfhtml.org; Expires=86400
   Set-Cookie: dark-mode=true; Domain=selfhtml.org; Expires=86400

Wenn der Server diese Antwortheader schickt, speichert der Browser für die Domain selfhtml.org einen Cookie namens benutzer und dem URL-codierten Wert Stefan Münz sowei einen Cookie namens dark-mode und dem Wert true. Beide Cookies verfallen nach 86400 Sekunden (24 Stunden).

Der Set-Cookie Header wird vom Server verwendet, um Cookies im Browser zu speichern. Der Header kann mehrfach angegeben werden, der Browser speichert die Cookies getrennt nach Name und Domain.

Beachten Sie: Die URL-codierung des benutzer-Cookies müssen Sie, wenn Sie den Wert in JavaScript verwenden wollen, selbst decodieren.

Sie können das Gleiche auch per JavaScript erreichen:

Setzen eines Cookies aus JavaScript
   document.cookie = "benutzer=Stefan M%C3%BCnz; Domain=selfhtml.org; Expires=86400";
   document.cookie = "darf-mode=true; Domain=selfhtml.org; Expires=86400";

Bei document.cookie handelt es sich um keine echte Variable. Was Sie ihr zuweisen, wird wie der Wert eines Set-Cookie Headers behandelt. Wenn Sie sie auslesen, bekommen Sie das, was der Browser dem Server im Anfrageheader Cookie senden würde:


Setzen eines Cookies aus JavaScript
   console.log(decodeURLComponent(document.cookie));

ergibt

 benutzer=Stefan Münz; dark-mode=true;

Im „Siehe auch“-Abschnitt finden Sie Links zu Artikeln, die sich mit Cookies und JavaScript befassen.

Empfehlung

Verwenden Sie Cookies nur dann, wenn Sie diese tatsächlich für eine serverseitige Programmierung benötigen. Die bessere Alternative liefert die Verwendung von localStorage oder sessionStorage der Web Storage API. Diese Methoden bieten mehrere Vorteile:

  • die Daten bleiben auf dem Client-Rechner, belasten also nicht die Übertragungsleistung
  • die speicherbare Datenmenge ist wesentlich größer
  • die Daten sind als Schlüssel-Wert-Paare strukturiert
  • es gibt kein Ablaufdatum (localStorage)

Siehe auch

Cookies können unter anderem mit Hilfe von JavaScript erzeugt und ausgewertet werden, siehe

Mittels der Eigenschaft navigator.cookieEnabled können Sie abfragen, ob der Anwender Cookies aktiviert hat.
  1. Web Standards: RFC 2616 Abschnitt 2.2