Freigeben über


HTTP-Cookies

HTTP-Cookies bieten dem Server einen Mechanismus zum Speichern und Abrufen von Statusinformationen im System der Clientanwendung. Dieser Mechanismus ermöglicht es webbasierten Anwendungen, Informationen über ausgewählte Elemente, Benutzereinstellungen, Registrierungsinformationen und andere Informationen zu speichern, die später abgerufen werden können.

Es gibt zwei Header, „Set-Cookie“ und „Cookie“, die mit Cookies zusammenhängen. Der Set-Cookie-Header wird vom Server als Antwort auf eine HTTP-Anforderung gesendet, die zum Erstellen eines Cookies im System des Benutzers verwendet wird. Der Cookie-Header wird von der Clientanwendung in eine HTTP-Anforderung an einen Server eingefügt, wenn ein Cookie mit einer passenden Domäne und einem passenden Pfad vorhanden ist.

Der Antwortheader „Set-Cookie“ verwendet das folgende Format:

Set-Cookie: <name>=<value>[; <name>=<value>]...
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; httponly]

Mindestens eine Zeichenfolgensequenz (getrennt durch Semikolons) nach dem Muster Name=Wert muss im Antwortheader „Set-Cookie“ enthalten sein. Der Server kann diese Zeichenfolgensequenzen verwenden, um Daten im System des Clients zu speichern.

Das Ablaufdatum wird mit dem Format „expires=Datum, wobei das Datum das Ablaufdatum in Greenwich Mean Time (GMT) ist. Wenn das Ablaufdatum nicht festgelegt ist, läuft das Cookie nach dem Ende der Internetsitzung ab. Andernfalls wird das Cookie bis zum Ablaufdatum im Cache gespeichert. Das Datum muss das folgende Format haben:

TAG, TT-MMM-JJJJ HH:MM:SS GMT

TAG

Der Wochentag (So, Mo, Di, Mi, Do, Fr, Sa).

TT

Der Tag im Monat (z. B. 01 für den ersten Tag des Monats).

MMM

Die aus drei Buchstaben bestehende Abkürzung für den Monat (Jan, Feb, Mär, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez).

JJJJ

Das Jahr.

HH

Der Stundenwert bei 24-Stunden-Zählung (22 wäre z. B. 22:00 Uhr).

MM

Der Minutenwert.

SS

Der Sekundenwert.

Die Angabe des Domänennamens nach dem Muster „Domäne=Domänenname“ ist für persistente Cookies optional und wird verwendet, um das Ende der Domäne anzugeben, für die das Cookie gültig ist. Sitzungscookies, die eine Domäne angeben, werden abgelehnt. Wenn die angegebene Endung des Domänennamens mit der Anforderung übereinstimmt, versucht das Cookie, den Pfad abzugleichen, um festzustellen, ob das Cookie gesendet werden soll. Wenn die Endung des Domänennamens beispielsweise „.microsoft.com“ lautet, werden Anforderungen an „home.microsoft.com“ und „support.microsoft.com“ daraufhin überprüft, ob das angegebene Muster mit der Anforderung übereinstimmt. Der Domänenname muss mindestens zwei oder drei Punkte enthalten, um zu verhindern, dass Cookies für weit verbreitete Domänennamenendungen wie .com, .edu und co.jp gesetzt werden. Zulässige Domänennamen wären z. B. .microsoft.com, .someschool.edu und .someserver.co.jp. Nur Hosts innerhalb der angegebenen Domäne können ein Cookie für eine Domäne setzen.

Das Festlegen des Pfads nach dem Muster „Pfad=beliebiger_Pfad“ ist optional und kann verwendet werden, um eine Teilmenge der URLs anzugeben, für die das Cookie gültig ist. Wenn ein Pfad angegeben ist, gilt das Cookie für alle Anforderungen, die diesem Pfad entsprechen. Wenn der angegebene Pfad beispielsweise „/example“ lautet, würden Anforderungen mit den Pfaden „/examplecode“ und „/example/code.htm“ übereinstimmen. Ist kein Pfad angegeben, wird der Pfad der Ressource angenommen, die mit dem Set-Cookie-Header verknüpft ist.

Das Cookie kann auch als sicher gekennzeichnet werden, was angibt, dass das Cookie nur an HTTPS-Server gesendet werden kann.

Schließlich kann ein Cookie als „HttpOnly“ gekennzeichnet werden (bei Attributen wird nicht zwischen Groß-/Kleinschreibung unterschieden), um anzugeben, dass das Cookie nicht skriptfähig ist und aus Sicherheitsgründen nicht für die Clientanwendung offengelegt werden sollte. Innerhalb von Windows Internet bedeutet dies, dass das Cookie nicht über die InternetGetCookie-Funktion abgerufen werden kann.

Der Cookie-Header ist in allen HTTP-Anforderungen enthalten, deren Domäne und Pfad mit der Anforderung übereinstimmen. Der Cookie-Header hat das folgende Format:

Cookie: <name>=<value> [;<name>=<value>]...

Mindestens eine Zeichenfolgensequenz im Format Name=Wert, welche die Informationen enthält, die im Cookie festgelegt wurden.

Generieren von Cookies

Es gibt drei Methoden zum Generieren von Cookies für Microsoft Internet Explorer: Verwenden von Microsoft JScript, Verwenden der WinINet-Funktionen und Verwenden eines CGI-Skripts. Alle Methoden müssen die Informationen festlegen, die im Set-Cookie-Header enthalten sind.

Mit dem DHTML-Objektmodell (Dynamic HTML) können Cookies durch den Aufruf der cookie-Eigenschaft des Dokumentobjekts gesetzt werden, wie im folgenden Beispiel gezeigt.

<SCRIPT language="JavaScript">
<!--
    document.cookie = "SomeValueName = Some_Value";
-->
</SCRIPT>

Cookies können von Anwendungen mit der InternetSetCookie-Funktion erstellt werden. Weitere Informationen finden Sie unter Setzen eines Cookies.

Cookies werden durch Einschließen eines Set-Cookie-Headers als Teil eines CGI-Skripts generiert, das in der HTTP-Antwort auf eine Anforderung enthalten ist.

Das folgende Beispiel ist ein CGI-Skript, das einen Set-Cookie-Header mit Perl enthält.

print "Set-Cookie:Test=test_value; 
      expires=Sat, 01-Jan-2000 00:00:00 GMT;
      path=/;"

Hinweis

WinINet unterstützt keine Serverimplementierungen. Außerdem darf es nicht in einem Dienst verwendet werden. Für Serverimplementierungen oder -dienste verwenden Sie Microsoft Windows HTTP Services (WinHTTP).