Cookie
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.
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.
Sie können das Gleiche auch per JavaScript erreichen:
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:
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
- Sicherheit/Cookies erlauben und verbieten
- Grundlagen/Rechtsfragen#Cookie-Hinweis
- Cookie/sichere Cookies
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.- ↑ Web Standards: RFC 2616 Abschnitt 2.2