HTTP-cookies
HTTP-cookies bieden de server een mechanisme voor het opslaan en ophalen van statusinformatie op het systeem van de clienttoepassing. Met dit mechanisme kunnen webtoepassingen informatie opslaan over geselecteerde items, gebruikersvoorkeuren, registratiegegevens en andere informatie die later kan worden opgehaald.
Cookie-Related kopteksten
Er zijn twee headers, Set-Cookie en Cookie, die betrekking hebben op cookies. De Set-Cookie header wordt door de server verzonden als reactie op een HTTP-aanvraag, die wordt gebruikt om een cookie op het systeem van de gebruiker te maken. De cookieheader wordt opgenomen door de clienttoepassing met een HTTP-aanvraag die naar een server wordt verzonden, als er een cookie is met een overeenkomend domein en pad.
Set-Cookie koptekst
De Set-Cookie antwoordheader gebruikt de volgende indeling:
Set-Cookie: <name>=<value>[; <name>=<value>]...
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; httponly]
Een of meer tekenreeksen (gescheiden door puntkomma's) die het patroon volgen naam=waarde moeten worden opgenomen in de Set-Cookie antwoordheader. De server kan deze tekenreeksen gebruiken om gegevens op te slaan op het systeem van de client.
De vervaldatum wordt ingesteld met behulp van de notatie verloopt=datum, waarbij datum de vervaldatum is in Greenwich Mean Time (GMT). Als de vervaldatum niet is ingesteld, verloopt de cookie nadat de internetsessie is beƫindigd. Anders wordt de cookie in de cache bewaard tot de vervaldatum. De datum moet de volgende indeling hebben:
DAY, DD-MMM-JJJJHH:MM:SS GMT
-
DAY-
-
De dag van de week (Zon, Ma, Tue, Wed, Do, Vr, Za).
-
DD-
-
De dag in de maand (zoals 01 voor de eerste dag van de maand).
-
MMM-
-
De afkorting van drie letters voor de maand (Jan, Feb, Mar, Apr, Mei, Jun, Jul, Aug, Sep, Oct, Dec, Dec).
-
JJJJ-
-
Het jaar.
-
UU-
-
De uurwaarde in militaire tijd (22 zou bijvoorbeeld 10:00 uur zijn).
-
MM-
-
De minuutwaarde.
-
SS-
-
De tweede waarde.
Het opgeven van de domeinnaam, met behulp van het patroondomein=domain_name, is optioneel voor permanente cookies en wordt gebruikt om het einde van het domein aan te geven waarvoor de cookie geldig is. Sessiecookies die een domein opgeven, worden geweigerd. Als de opgegeven domeinnaam eindigt bij de aanvraag, probeert de cookie het pad te vinden om te bepalen of de cookie moet worden verzonden. Als de domeinnaam bijvoorbeeld .microsoft.com is, worden aanvragen voor home.microsoft.com en support.microsoft.com gecontroleerd om te zien of het opgegeven patroon overeenkomt met de aanvraag. De domeinnaam moet ten minste twee of drie perioden bevatten om te voorkomen dat cookies worden ingesteld voor veelgebruikte domeinnaameinden, zoals .com, .edu en co.jp. Toegestane domeinnamen zijn vergelijkbaar met .microsoft.com, .someschool.edu en .someserver.co.jp. Alleen hosts binnen het opgegeven domein kunnen een cookie voor een domein instellen.
Het instellen van het pad, met behulp van het patroonpad=some_path, is optioneel en kan worden gebruikt om een subset op te geven van de URL's waarvoor de cookie geldig is. Als er een pad is opgegeven, wordt de cookie beschouwd als geldig voor aanvragen die overeenkomen met dat pad. Als het opgegeven pad bijvoorbeeld /example is, komen aanvragen met de paden /examplecode en /example/code.htm overeen. Als er geen pad is opgegeven, wordt ervan uitgegaan dat het pad is van de resource die is gekoppeld aan de Set-Cookie-header.
De cookie kan ook worden gemarkeerd als veilig, waarmee wordt aangegeven dat de cookie alleen naar https-servers kan worden verzonden.
Ten slotte kan een cookie worden gemarkeerd als HttpOnly (kenmerken zijn niet hoofdlettergevoelig), om aan te geven dat de cookie niet scriptbaar is en om veiligheidsredenen niet zichtbaar moet worden gemaakt voor de clienttoepassing. Binnen Windows Internet betekent dit dat de cookie niet kan worden opgehaald via de InternetGetCookie functie.
Cookieheader
De cookieheader is opgenomen in HTTP-aanvragen met een cookie waarvan het domein en het pad overeenkomen met de aanvraag. De cookieheader heeft de volgende indeling:
Cookie: <name>=<value> [;<name>=<value>]...
Een of meer tekenreeksen, met behulp van de notatie naam=waarde, bevatten de informatie die in de cookie is ingesteld.
Cookies genereren
Er zijn drie methoden voor het genereren van cookies voor Microsoft Internet Explorer: het gebruik van Microsoft JScript, het gebruik van de WinINet-functies en het gebruik van een CGI-script. Alle methoden moeten de informatie instellen die is opgenomen in de Set-Cookie-header.
Een cookie genereren met behulp van het DHTML-objectmodel
Met behulp van het DHTML-objectmodel (Dynamic HTML) kunnen cookies worden ingesteld door de cookie aan te roepen eigenschap van het documentobject, zoals wordt weergegeven in het volgende voorbeeld.
<SCRIPT language="JavaScript">
<!--
document.cookie = "SomeValueName = Some_Value";
-->
</SCRIPT>
Een cookie genereren met behulp van de WinInet-functies
Cookies kunnen worden gemaakt door toepassingen met behulp van de functie InternetSetCookie. Zie Een cookie instellenvoor meer informatie.
Een cookie genereren met behulp van een CGI-script
Cookies worden gegenereerd door een Set-Cookie header op te nemen als onderdeel van een CGI-script dat is opgenomen in het HTTP-antwoord op een aanvraag.
Het volgende voorbeeld is een CGI-script dat een Set-Cookie header bevat met behulp van Perl.
print "Set-Cookie:Test=test_value;
expires=Sat, 01-Jan-2000 00:00:00 GMT;
path=/;"
Notitie
WinINet biedt geen ondersteuning voor serverimplementaties. Daarnaast mag deze niet worden gebruikt vanuit een service. Voor server-implementaties of -services wordt Microsoft Windows HTTP Services (WinHTTP)gebruikt.