De beperkingen van cookies

Onlangs heb ik me beziggehouden om een line-up kalender te maken waarop de bezoeker groepen kan markeren die hij wil bezoeken. (Zie vorige post) Dit zou opgeslagen worden in een cookie. Al snel kwam ik een probleem tegen. Bij markeren van meer dan 30 groepen werden de eerste markeringen verwijderd. Dit vroeg om een onderzoek.

Cookies zijn niet echt betrouwbaar en gebruik je best zo weinig mogelijk. Er zijn ook een hoop beperkingen aan cookies en de beperkingen verschillen in iedere browser.

Testresultaten op Windows XP SP3
BrowserBytes[1]Aantal/domein
Firefox 34095+250
Safari 3.14095+2[2]
Internet Explorer 74093+2[3]50
Opera 9.54047+230

Bekijk de test.

  1. Een cookie wordt als volgt opgeslagen: [naam van cookie] + [=] + [eventueel een waarde] ⇒ minstens 2 bytes per opgeslagen cookie.
  2. Ik kon geen limiet vinden omdat Apache de requestregel standaard limiteert tot 8190 bytes. Zie LimitRequestFieldSize Directive.
  3. Bij IE is de maximumgrootte van een cookie afhankelijk van de totale grootte van andere cookies die al opgeslagen zijn voor het domein.

De limiet op de requestregel (de opdracht die gestuurd wordt als je een link volgt. Deze bevat url cookies, browsernaam e.d.) die Apache instelt kan voor problemen zorgen. Als de standaard limiet van 8190 bytes overschreden wordt is het hele domein onbereikbaar tot je de cookies verwijderd. Een doorsnee gebruiker denkt er niet direct aan om dat te doen dus moet je als webdeveloper daar rekening mee houden. Bij IE kan dit niet voorkomen omdat er maar 4kB voor cookie opslag beschikbaar wordt gesteld per domein. Opera verwijdert cookies indien nodig waardoor je nooit de limiet overschrijdt (hoewel dit redelijk grillig lijkt te werken).

Bad Request

Your browser sent a request that this server could not understand. Size of a request header field exceeds server limit.

Melding bij te veel/te grote cookies.

Verder lezen: HTTP cookie op Wikipedia

Gepost: 2008-08-02 11u48


Reacties

Er werd nog niet gereageerd.

Plaats een reactie

*Velden verplicht in te vullen.
E-mail wordt niet gepubliceerd.
Uw reactie wordt pas zichtbaar als deze goedgekeurd wordt door de eigenaar van deze blog.
Wanneer u een reactie plaatst, wordt er een cookie opgeslagen.