HTTP client-server interaktion

Vi vil her forklare, hvad interaktionen mellem en klient og en server involverer teknisk set. Denne forklaring er nødvendig for at forstå, hvorledes cookies behandles af klient og server.

De nedenstående HTTP Headers er fanget ved at lave en telnet til port 80 på www.g-b.dk-serveren.

Client-server interaktion uden cookies

Interaktion mellem en klient og en server igangsættes altid af klienten, som forespørger en server om information. Serveren svarer derefter på denne forespørgsel ved at sende den ønskede information. Denne interaktion foretages ved hjælp af HTTP Request Header og HTTP Response Header. Når brugeren beder om en URL, sender klienten en HTTP Request Header til serveren blandt andet indeholde følgende (eksempel):

GET /torben/cookies/oversigt.htm HTTP/1.0

Serveren accepterer HTTP Request Headeren og svarer klienten med en HTTP Response Header efterfulgt af selve HTML-filen, eksempelvis med følgende indhold:

HTTP/1.0 200 OK
Server: Netscape-FastTrack/2.0f
Date: Thu, 29 May 1997 20:00:55 GMT
Accept-ranges: bytes
Last-modified: Thu, 29 May 1997 15:26:50 GMT
Content-length: 3316
Content-type: text/html

Ovenstående eksempel viser det minimum af information, som en server skal have fra en klient for at lave et HTTP Response. Klienten sender normalt flere informationer til serveren, blandt andet vedrørende hvilke MIME-typer klienten kan acceptere. En typisk HTTP Request Header ser eksempelvis således ud:

GET /torben/cookies/oversigt.htm HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/3.01Gold (Win95; I)
Host: 130.226.39.138
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*

Klient-server interaktion med cookies

Første gang en klient sender et HTTP Request til en server, som ønsker at sætte en cookie, sender klienten blot en normal HTTP Request Header. Serveren sætter så en cookie ved at inkludere en Set-Cookie HTTP Response Header [Netscape] som en del af HTTP Response Headeren. Det ser således ud:

HTTP/1.0 200 OK
Server: Netscape-FastTrack/2.0f
Date: Fri, 30 May 1997 16:53:36 GMT
Set-cookie: track=userid%3A%3A12345%26dato%3A%3A970101;
expires=Friday, 01-May-1998 00:00:00 GMT;
Content-type: text/html

Denne Set-Cookie HTTP Response Header skal genereres af et CGI-program. Cookies sat med JavaScript benytter overhovedet ikke Set-Cookie HTTP Response Headeren i HTTP Headeren. Serveren kan i samme HTTP Response Header inkludere flere Set-Cookie HTTP Response Headers, hvis flere cookies skal sættes.

Klienten reagerer på Set-Cookie HTTP Response Headeren ved at kontrollere længden, udløbsdatoen, path og domain for cookien samt antallet af eksisterende cookies, hvorefter den lagres lokalt på brugerens harddisk. Cookies gemmes forskellige steder, afhængig af hvilken browser, man bruger. Se beskrivelser for Netscape Navigator og Microsoft Internet Explorer i afsnittet Cookies i Netscape Navigator og Microsoft Internet Explorer. Dette kan dog forhindres, hvis browseren er sat op til at advare brugeren ved modtagelse af en cookie.

Næste gang klienten sender et HTTP Request til serveren, fra hvilken den nu har en cookie, sender klienten en Cookie HTTP Request Header [Netscape] inkluderet i HTTP Request Headeren. Det ser således ud:

GET /torben/cookies/oversigt.htm HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/3.01Gold (Win95; I)
Host: 130.226.39.138
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Cookie: track=userid%3A%3A12345%26dato%3A%3A970101;

« Teori: Sikkerhed - Teori: Specifikation »