Ein HTTP-Cookie, auch Browser-Cookie oder einfach Cookie genannt (/[wiki:Vorlage:IPA]/ englisch Plätzchen, Keks), bezeichnet Informationen, die ein Webserver zu einem Browser sendet, die dann der Browser wiederum bei Zugriffen auf denselben Webserver zurücksendet. Mit Cookies ist das zustandslose Hypertext Transfer Protocol um die Möglichkeit erweitert, Information zwischen Aufrufen zu speichern.
Cookies werden in den Header-Teilen von HTTP-Anfragen und HTTP-Antworten übertragen.
Man kann zwischen persistenten Cookies und Session-Cookies unterscheiden. Erstere werden dauerhaft gespeichert (beispielsweise auf der Festplatte), während letztere nur für die Länge einer Sitzung gespeichert werden.
Wenn der Webserver einer Website Cookies zu einem Browser sendet (HTTP-Antwort), werden sie lokal auf dem Endgerät gespeichert, auf Computern üblicherweise in einer Textdatei. Dort sucht der Browser bei jedem Aufruf einer Webseite nach Cookies, die von der selben Website stammen, und fügt diese Cookies dem Aufruf (HTTP-Anfrage) hinzu. Damit ist eine beständige Verbindung zwischen Browser und Server gewährleistet, der Server „erkennt den Browser wieder”. Ein Cookie kann beliebigen Text enthalten, seine Länge ist auf 4 KiB Zeichen begrenzt. Mit jeder übermittelten Datei, also z. B. auch mit Bilddateien, kann ein Server nur einen Cookie versenden, mit einer Anfrage des Browsers können gleichzeitig mehrere Cookies versandt werden. Dieses Konzept wurde ursprünglich von Netscape entwickelt und ist in RFC 2109 spezifiziert.
Die Lebensdauer des Cookies kann vom Webserver beschränkt worden sein. Nach Ablauf dieser löscht der Browser das Cookie. Bei einigen Browsern, wie zum Beispiel Mozilla, kann der Benutzer die Lebenszeit selbst ändern.
Eine typische Anwendung von Cookies ist das Speichern persönlicher Einstellungen auf Websites, vor allem in Foren. Damit ist es möglich, diese Website zu besuchen, ohne jedesmal die Einstellungen erneut vornehmen zu müssen. Auch Online-Shops verwenden Cookies, um virtuelle Einkaufskörbe zu ermöglichen. Der Kunde kann damit Artikel in den Einkaufskorb legen und sich weiter auf der Website umschauen, um danach die Artikel zusammen online zu kaufen. Cookies dienen auch der Sicherheit. Da man sich bei manchen Websites wie Wikipedia per Passwort einloggen kann, werden Cookies gesetzt, um genau diesen Nutzer eindeutig zu erkennen und damit nicht bei jedem Aufruf einer Unterseite das Passwort erneut eingegeben werden muss. Häufig werden Logininformationen über eine Session-ID (Zahlenfolge), die nur für eine [wiki:Session] gültig ist – in den Cookies gespeichert. Das ist sicherer und weniger aufwendig, als diese Informationen jeder URI hinzuzufügen und damit Unbefugten den Zugriff auf geschützte Inhalte zu erleichtern.
Die eindeutige Erkennung kann allerdings auch zu mißbräuchlichen Zwecken ausgenutzt werden. Cookies werden dabei z.B. dafür verwendet, Benutzerprofile über das Surfverhalten zu erstellen. Ein Online-Shop kann z. B. diese Daten mit dem Namen des Kunden verknüpfen, wenn man Kunde bei ihm ist, und zielgruppenorientierte Werbemails schicken. Ein Cookie kann jedoch nur Informationen enthalten, die der Website-Anbieter selbst an den Benutzer sendet – private Daten des Benutzers lassen sich damit nicht auslesen.
Marketingfirmen, die bei vielen Websites Werbebanner haben, können mit so genannten "serverfremden" Cookies sogar über einzelne Websites hinweg den Benutzer verfolgen.
Ein Kompromiss zwischen den Vor- und Nachteilen von Cookies kann erzielt werden, indem man seinen Browser so konfiguriert, dass persistente Cookies nicht oder nur gegen Rückfrage zugelassen werden, was z. B. die Erstellung von Benutzerprofilen erschwert, und Session-Cookies automatisch zugelassen werden, z. B. für Webeinkäufe, Passwörter. Außerdem bieten die meisten Browser die Möglichkeit, Cookies selektiv für bestimmte Domänen zu erlauben bzw. zu sperren oder nach dem Surfen automatisch zu löschen, wie es automatisch bei Session-Cookies geschieht. Auch ist es möglich, serverfremde Cookies automatisch abzuweisen, über die ein Dritter, etwa ein Werbepartner der Internet-Seite, das eigene Verhalten über mehrere Server hinweg aufzeichnen könnte.
Jeder Cookie muss diese Felder enthalten:
Weitere optionale Möglichkeiten:
Set-Cookie: letzteSuche="cookie aufbau"; expires=Tue, 29-Mar-2005 19:30:42 GMT; Max-Age=2592000; Path=/cgi/suche.py; Version="1";
Mit dieser HTTP-Headerzeile sendet der Webserver einen Cookie - erkenntlich am einleitenden Set-Cookie: - mit dem Namen letzteSuche und dem Wert cookie aufbau an den Browser. Der Cookie soll am 29. März 2005 oder in 30 Tagen (2592000 = 30*24*60*60 Sekunden) gelöscht werden und vom Browser nur mit Anfragen zurückgeschickt werden, die an /cgi/suche.py auf diesem Server gerichtet sind. Die entsprechende Headerzeile mit Cookie könnte dann lauten:
Cookie: letzteSuche="cookie aufbau"; $Path=/cgi/suche.py; $Version="1";
für Browser vorgeschriebene Voraussetzungen:
