Inleiding

Wat zijn Cookies
Een cookiebalk is een soort “toestemmingsmechanisme” tussen de website en jouw browser. De browser is het programma dat je gebruikt om op internet te surfen (bijvoorbeeld Safari, Chrome of Firefox) en die slaat ook gegevens op voor je – bijvoorbeeld wat jij bekijkt en wat je voorkeuren zijn.

Cookies zijn kleine stukjes data die websites naar je browser sturen om informatie te onthouden over jou als gebruiker. Het zijn stukjes tekst die worden opgeslagen als .txt bestand. Het is dus geen scriptje dat iets kan uitvoeren. Het is puur een paar regels tekst zonder code, die in de header can elk request wordt meegestuurd. Dat kan bijvoorbeeld zijn wat je in een winkelwagentje hebt gedaan, je loginstatus, of welke artikelen je al hebt bekeken. Ze zorgen ervoor dat je niet bij elk bezoek alles opnieuw hoeft in te stellen.De naam cookie in de context van computers stamt eigenlijk af van het begrip magic cookie, een term uit de vroege computerjaren. Dit was een klein, onzichtbaar gegevenspakketje dat werd doorgegeven tussen computerprogramma’s. Zo’n magic cookie functioneerde als een soort identificatiemiddel: het droeg informatie die door een ander programma kon worden opgepakt en herkend, zonder dat de gebruiker hier verder mee bezig was. Dit idee van een klein stukje data dat iets doorgeeft, werd later overgenomen toen webontwikkelaars een manier nodig hadden om gebruikersinformatie te onthouden tijdens surfsessies.

Magic cookie zelf heeft waarschijnlijk zijn naam te danken aan het idee dat het iets “kleins en verborgen” was dat iets speciaals of magisch kon doen – zoals een verborgen boodschap in een fortuinkoekje. Toen webcookies werden geïntroduceerd, werd dit idee overgenomen en ingekort tot simpelweg cookie, wat verwijst naar dat kleine stukje data dat tussen jou en een website wordt doorgegeven en onthouden.

Kortom, de naam cookie is een soort metafoor voor iets kleins en nuttigs dat ‘magisch’ werkt, een beetje zoals de verrassing in een koekje!

Hoe werken Cookies
Cookies in je browser zijn in feite kleine tekstbestandjes. Hun formaat en werking zijn vrij eenvoudig maar effectief. Elke keer dat je een website bezoekt, kan deze een cookie naar je browser sturen, die dit bestandje vervolgens lokaal opslaat op jouw apparaat (zoals je desktopcomputer).

Wat gebeurt er ook al weer als je een website bezoekt?
Je vult in het adresvenster een url in. het Hypertext Transfer Protocol zorgt ervoor dat een een browser op een PC een html-pagina kan opvragen die zich op een server bevindt elders. Als je een website bezoekt die cookies gebruikt, stuurt de browser elke keer bij een nieuwe pagina-aanvraag (zoals wanneer je doorklikt naar een andere pagina op de site) de relevante cookies mee in de HTTP-header van die aanvraag. Hierdoor kan de server herkennen dat jij dezelfde gebruiker bent, zonder dat je bijvoorbeeld opnieuw hoeft in te loggen.

De browser kan deze cookies dan bijhouden en weer doorsturen naar de website bij een volgend bezoek. Dit maakt het mogelijk dat websites bepaalde gegevens over je voorkeuren en sessie onthouden, zoals je loginstatus, instellingen of winkelwagentje.

Bestandsformaat en opslag
Een cookie is dus een tekstbestand met een .txt-extensie, en het bevat enkele basisgegevens zoals:

Naam van de cookie: Een unieke identificatie voor de cookie.
Waarde: Hierin zit de eigenlijke informatie die de website wil opslaan, zoals een sessie-ID.
Domein en pad: Het specifieke domein (website) en pad waar de cookie geldig voor is.
Vervaldatum: Wanneer de cookie automatisch gewist wordt. Dit kan een enkele sessie zijn (verwijderd als je de browser sluit) of langer.
Beveiligingskenmerk: Sommige cookies hebben een secure kenmerk dat ervoor zorgt dat ze alleen via een beveiligde HTTPS-verbinding verzonden worden.
Een cookie bevat enkel tekst; het is dus géén script of code die iets kan uitvoeren. Dit betekent dat een cookie zelf niets ‘actiefs’ doet en geen programma kan uitvoeren. Cookies worden opgeslagen als platte tekst en zijn niet bedoeld om code of functies uit te voeren. Dit is ook om veiligheidsredenen; een website zou bijvoorbeeld een stukje Javascript kunnen proberen toe te voegen aan een cookie om iets op je computer te doen, maar dat kan niet dankzij deze restrictie.

Waar worden cookies opgeslagen?
Afhankelijk van de browser worden cookies in verschillende directories opgeslagen, vaak in een submap van je gebruikersprofiel of browserprofiel op de computer. Hier staan de cookies als kleine tekstbestanden, soms per website of in een databaseachtig bestand, afhankelijk van de browser (bijvoorbeeld SQLite-bestanden in moderne browsers).

Hoe cookies werken in de browser
Als je een website bezoekt die cookies gebruikt, stuurt de browser elke keer bij een nieuwe pagina-aanvraag (zoals wanneer je doorklikt naar een andere pagina op de site) de relevante cookies mee in de HTTP-header van die aanvraag. Hierdoor kan de server herkennen dat jij dezelfde gebruiker bent, zonder dat je bijvoorbeeld opnieuw hoeft in te loggen.

Beheer en privacy
In de instellingen van je browser kun je meestal zien welke cookies actief zijn, ze beheren of verwijderen, en zelfs instellen dat ze automatisch gewist worden na een bepaalde tijd. Veel browsers bieden ook opties om cookies per website of volledig te blokkeren om de privacy te waarborgen.

Kortom: een cookie is een klein, eenvoudig tekstbestandje met vaste informatie en geen actieve code. Het wordt beheerd door je browser en stelt websites in staat om je voorkeuren of sessie-informatie te onthouden zonder direct risico te vormen voor de veiligheid.

Wat is een HTTP-header in een request aan een server?
Als je een website bezoekt die cookies gebruikt, stuurt de browser elke keer bij een nieuwe pagina-aanvraag (zoals wanneer je doorklikt naar een andere pagina op de site) de relevante cookies mee in de HTTP-header van die aanvraag. Hierdoor kan de server herkennen dat jij dezelfde gebruiker bent, zonder dat je bijvoorbeeld opnieuw hoeft in te loggen.
welke cookies zet je eigen browser in de HTTP-header in een request aan een server?
HTTP-verzoek en de rol van de browser
Wanneer je in je browser een URL invoert en op “Enter” drukt, doet de browser het volgende:

Hij bouwt een HTTP-verzoek op. Dit verzoek bevat de vraag om een specifieke webpagina (zoals example.com/page).
Bij dat verzoek stuurt de browser ook gegevens mee in de vorm van HTTP-headers. Dit zijn stukjes informatie die aangeven welke browser je gebruikt, of je een bepaalde taalvoorkeur hebt, en – belangrijk in dit geval – welke cookies je hebt opgeslagen voor die website.
Dus hoewel de HTML van de pagina op dat moment nog op de server staat, komt deze header wel al vanaf jouw browser. Het is dus eigenlijk een stukje communicatie dat jouw browser naar de server stuurt vóórdat de server antwoordt.

2. Hoe ziet een HTTP-header met cookies eruit?
Een HTTP-header met cookies kan er ongeveer zo uitzien, stel dat je op example.com bent ingelogd en een cookie hebt die je sessie onthoudt. Een HTTP-verzoekheader kan er zo uitzien:

http
Code kopiëren
GET /page HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36
Accept-Language: en-US,en;q=0.9
Cookie: session_id=abc123; theme=dark
Hier zie je een paar belangrijke onderdelen:

GET /page: Dit is het type verzoek; in dit geval vraagt de browser om een pagina op de server.
Host: example.com: Geeft aan voor welk domein dit verzoek bedoeld is.
User-Agent: Informatie over jouw browser, besturingssysteem, enzovoort.
Cookie: Hier worden alle cookies meegestuurd die relevant zijn voor example.com. In dit voorbeeld stuurt de browser twee cookies mee: session_id=abc123 en theme=dark.
De cookies worden dus als een soort ‘bagage’ met het verzoek meegegeven, en de server kan deze informatie gebruiken om te zien wie jij bent of om andere voorkeuren toe te passen.

3. De server verwerkt het verzoek en stuurt een antwoord
De server ontvangt dit verzoek en haalt informatie uit de cookies in de header. Op basis hiervan kan de server herkennen dat jij al ingelogd bent (op basis van session_id) en dat je een donker thema hebt gekozen (op basis van theme=dark). De server kan je dan direct de HTML-pagina sturen met jouw instellingen, zonder dat je opnieuw hoeft in te loggen of je voorkeuren opnieuw moet instellen.

De server stuurt vervolgens de HTML (en eventueel andere bestanden zoals CSS, JavaScript, afbeeldingen) als antwoord terug naar jouw browser, en jouw browser rendert dit tot de webpagina die jij ziet.

4. Is de HTTP-header een onderdeel van de browser?
Ja, de HTTP-header is een deel van de communicatie die je browser opbouwt. De browser is verantwoordelijk voor het samenstellen van het HTTP-verzoek, inclusief alle headers, en stuurt dit naar de server. Zodra de server reageert, ontvangt de browser de HTML en andere bestanden en zet deze om in de webpagina die je ziet. De HTTP-header zelf is niet zichtbaar in de webpagina, maar wordt wel elke keer meegestuurd bij een nieuwe pagina-aanvraag naar de server.

Kort gezegd: de browser is verantwoordelijk voor het toevoegen van de cookies aan de HTTP-header in elk verzoek naar de server. Op die manier helpt de HTTP-header bij het onderhouden van sessies en het toepassen van persoonlijke instellingen zonder dat de gebruiker opnieuw hoeft in te loggen of voorkeuren hoeft in te stellen.

welke cookies zet je eigen browser in de HTTP-header in een request aan een server?
Hoe een server een cookie in jouw browser plaatst
Wanneer jij een pagina aanvraagt, stuurt de server niet alleen de HTML van die pagina naar jouw browser, maar voegt hij ook extra informatie toe aan de HTTP-headers van het antwoord. Eén van die headers is de Set-Cookie-header. Deze header bevat de instructies voor de browser om een nieuw cookie op te slaan.

Een voorbeeld van zo’n antwoord-header van de server kan er als volgt uitzien:

http
Code kopiëren
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Set-Cookie: session_id=abc123; Expires=Wed, 09 Jun 2024 10:18:14 GMT; Path=/; Secure; HttpOnly
Set-Cookie: theme=dark; Expires=Wed, 09 Jun 2024 10:18:14 GMT; Path=/
Hier zie je het volgende gebeuren:

Set-Cookie: Dit is de instructie die de server naar de browser stuurt om het cookie op te slaan. In dit geval worden er twee cookies gezet: session_id en theme.
Waarden: Elke cookie heeft een naam en een waarde, zoals session_id=abc123 en theme=dark.
Extra parameters: Er worden ook enkele eigenschappen toegevoegd, zoals:
Expires: Hier staat de vervaldatum van het cookie. In dit voorbeeld blijft het cookie geldig tot 9 juni 2024. Zonder Expires wordt het cookie als een session cookie gezien en gewist als je de browser sluit.
Path: Geeft aan op welke paden van de website het cookie geldig is (bijvoorbeeld / voor de hele website).
Secure en HttpOnly: Secure betekent dat het cookie alleen over HTTPS-verbindingen wordt verstuurd, en HttpOnly betekent dat het cookie niet toegankelijk is voor JavaScript, wat de veiligheid verhoogt.
Wat doet jouw browser met deze instructie?
Zodra de browser deze Set-Cookie-header ontvangt, gaat hij aan de slag:

De browser leest de Set-Cookie-instructie.
Vervolgens slaat de browser het cookie lokaal op in zijn eigen cookie-opslag (de cookie-database, zoals we eerder besproken hebben).
Bij een volgend bezoek aan dezelfde website stuurt jouw browser automatisch het opgeslagen cookie mee in het HTTP-verzoek, zodat de server weet wie jij bent en jouw voorkeuren al kent.
Maar komt er dan een .txt-bestand van de server?
Nee, er komt niet letterlijk een .txt-bestand van de server naar jouw browser. In plaats daarvan komt er een instructie (de Set-Cookie-header) in de HTTP-respons van de server naar jouw browser, die vertelt hoe en welk cookie de browser moet opslaan. De browser maakt vervolgens zelf een tekstbestand of een regel in zijn cookie-database aan met de gegevens uit deze Set-Cookie-header.

Waarom kan dit de laadsnelheid verbeteren?
Cookies kunnen de laadsnelheid verbeteren doordat ze voorkeuren en sessiegegevens onthouden. Hier zijn enkele manieren waarop dit werkt:

Sessiebeheer: Cookies zorgen ervoor dat je ingelogd blijft, zodat de server niet bij elke nieuwe pagina-aanvraag jouw identiteit hoeft te controleren. Dit maakt navigeren binnen een site sneller.
Instellingen onthouden: Voor dingen zoals thema-instellingen (theme=dark), taalvoorkeuren, of andere opties hoeft de website niet steeds opnieuw te vragen wat je voorkeuren zijn. Hierdoor kan de server sneller de juiste versie van een pagina aanbieden.
Caching-optimalisatie: Sommige cookies helpen om bepaalde elementen van de site sneller te laden door aan te geven welke delen van een pagina voor jou specifiek zijn en welke niet, zodat je niet onnodig veel data binnenhaalt.
Samenvattend: De server stuurt een instructie naar de browser om een cookie op te slaan, en de browser volgt die instructie. De cookie wordt vervolgens bij elk bezoek aan die website automatisch naar de server gestuurd, wat helpt om sessiegegevens en voorkeuren te onthouden, zonder dat je steeds opnieuw hoeft in te loggen of je instellingen opnieuw moet doorgeven.

Snel bladeren