Freigeben über


HTTP-Cookies

HTTP-Cookies bieten dem Server einen Mechanismus zum Speichern und Abrufen von Zustandsinformationen im System der Clientanwendung. Dieser Mechanismus ermöglicht webbasierten Anwendungen das Speichern von Informationen zu ausgewählten Elementen, Benutzereinstellungen, Registrierungsinformationen und anderen Informationen, die später abgerufen werden können.

Es gibt zwei Header, Set-Cookie und Cookie, die sich auf Cookies beziehen. Der Set-Cookie-Header wird vom Server als Antwort auf eine HTTP-Anforderung gesendet, die verwendet wird, um ein Cookie auf dem System des Benutzers zu erstellen. Der Cookie-Header wird von der Clientanwendung mit einer HTTP-Anforderung eingeschlossen, die an einen Server gesendet wird, wenn ein Cookie mit einer übereinstimmenden Domäne und einem übereinstimmenden Pfad vorhanden ist.

Der Set-Cookie Antwortheader 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), die dem Wert des Musternamens= folgen, müssen im Set-Cookie-Antwortheader enthalten sein. Der Server kann diese Zeichenfolgensequenzen verwenden, um Daten im System des Clients zu speichern.

Das Ablaufdatum wird mit dem Format expires=date festgelegt, wobei 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 beibehalten. Das Datum muss das folgende Format verwenden:

TAG, TT-MMM-JJJJHH:MM:SS GMT

TAG

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

DD

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

MMM

Die Drei-Buchstaben-Abkürzung für den Monat (Jan, Feb, Mar, Apr, Mai, Jun, Jul, Aug, Sep, Okt, Nov, Dez).

JJJJ

Das Jahr.

HH

Der Stundenwert in militärischer Zeit (22 wäre z. B. 22 22 Uhr).

MM

Der Wert für die Minute.

SS

Der zweite Wert.

Die Angabe des Domänennamens mithilfe des Musters domain=domain_name 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 Domänenendung mit der Anforderung übereinstimmt, versucht das Cookie, dem Pfad zu entsprechen, um zu bestimmen, ob das Cookie gesendet werden soll. Wenn beispielsweise die Endung des Domänennamens .microsoft.com lautet, werden Anforderungen an home.microsoft.com und support.microsoft.com überprüft, um festzustellen, 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 häufig verwendete Domänennamenendungen wie .com, .edu und co.jp festgelegt werden. Zulässige Domänennamen ähneln .microsoft.com, .someschool.edu und .someserver.co.jp. Nur Hosts innerhalb der angegebenen Domäne können ein Cookie für eine Domäne festlegen.

Das Festlegen des Pfads mithilfe des Pattern path=some_path ist optional und kann verwendet werden, um eine Teilmenge der URLs anzugeben, für die das Cookie gültig ist. Wenn ein Pfad angegeben wird, gilt das Cookie als gültig für alle Anforderungen, die diesem Pfad entsprechen. Wenn der angegebene Pfad beispielsweise /example ist, würden Anforderungen mit den Pfaden /examplecode und /example/code.htm übereinstimmen. Wenn kein Pfad angegeben wird, wird davon ausgegangen, dass es sich bei dem Pfad um den Pfad der Ressource handelt, die dem Set-Cookie-Header zugeordnet ist.

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

Schließlich kann ein Cookie als HttpOnly markiert werden (Attribute beachten die Groß-/Kleinschreibung nicht), um anzugeben, dass das Cookie nicht skriptfähig ist und aus Sicherheitsgründen nicht für die Clientanwendung offengelegt werden sollte. In Windows Internet bedeutet dies, dass das Cookie nicht über die InternetGetCookie-Funktion abgerufen werden kann.

Der Cookie-Header ist in allen HTTP-Anforderungen enthalten, die über ein Cookie verfügen, dessen Domäne und Pfad der Anforderung entsprechen. Der Cookie-Header hat das folgende Format:

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

Mindestens eine Zeichenfolgensequenz, die den Formatnamenwert= verwendet, enthalten die im Cookie festgelegten Informationen.

Generieren von Cookies

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

Mithilfe des DHTML-Objektmodells (Dynamic HTML) können Cookies festgelegt werden, indem die Cookie-Eigenschaft des Dokumentobjekts aufgerufen wird, 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 Festlegen eines Cookies.

Cookies werden generiert, indem ein Set-Cookie-Header als Teil eines CGI-Skripts in der HTTP-Antwort auf eine Anforderung eingeschlossen wird.

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. Darüber hinaus sollte es nicht von einem Dienst aus verwendet werden. Verwenden Sie für Serverimplementierungen oder Dienste Microsoft Windows HTTP Services (WinHTTP).