Was sind die technischen Grenzen der Speicherkapazität von HTTP-Cookies?
Die technischen Grenzen von HTTP-Cookies sind nicht in einem einzigen, starren Gesetz festgeschrieben, sondern ergeben sich aus den Empfehlungen der Internet Engineering Task Force (RFCs) und den individuellen Implementierungen der Browser-Hersteller.
Hier sind die entscheidenden technischen Grenzen im Detail:
1. Die Größe pro Cookie (4 KB)
Die wohl bekannteste Grenze ist die maximale Größe eines einzelnen Cookies.
- Limit: Nahezu alle modernen Browser (Chrome, Firefox, Edge, Safari) begrenzen die Größe eines einzelnen Cookies auf 4.096 Bytes (4 KB).
- Was wird gezählt? In der Regel zählt die Summe aus dem Namen des Cookies und dem Wert des Cookies. Einige Browser zählen auch die Attribute (wie
Expires,Path,Domain) zum Limit dazu, die meisten berechnen jedoch nur das „Name-Value-Paar“. - Folge bei Überschreitung: Wenn ein Server versucht, ein Cookie zu setzen, das größer als 4 KB ist, wird es vom Browser meist kommentarlos ignoriert oder abgeschnitten.
2. Anzahl der Cookies pro Domain
Browser begrenzen auch, wie viele verschiedene Cookies eine einzelne Website (Domain) setzen darf.
- Empfehlung (RFC 6265): Mindestens 50 Cookies pro Domain.
- Reale Limits:
- Chrome/Edge: Ca. 150 bis 180 Cookies pro Domain.
- Firefox: Ca. 150 Cookies pro Domain.
- Was passiert bei Überschreitung? Wenn das Limit erreicht ist und ein neues Cookie gesetzt wird, löscht der Browser ein altes Cookie dieser Domain (meist nach dem LRU-Prinzip – Least Recently Used, also das am längsten nicht mehr verwendete Cookie).
3. Gesamtzahl der Cookies im Browser
Es gibt eine Obergrenze für alle Cookies, die ein Browser über alle besuchten Websites hinweg speichert.
- Empfehlung: Mindestens 3.000 Cookies insgesamt.
- Moderne Browser: Heutige Browser erlauben oft deutlich mehr, aber ab einer gewissen Menge beginnt der Browser, alte Cookies zu löschen, um den Speicherplatz zu begrenzen.
4. Zeichencodierung und Overhead
Da Cookies im HTTP-Header übertragen werden, gibt es technische Einschränkungen bei den erlaubten Zeichen:
- Cookies dürfen prinzipiell nur US-ASCII-Zeichen enthalten.
- Sonderzeichen, Kommas, Semikolons oder Leerzeichen müssen URL-encoded werden (z. B. wird ein Leerzeichen zu
%20). - Wichtig: Ein URL-encoded Zeichen verbraucht mehr Bytes (z. B. wird aus dem Buchstaben „ü“ in UTF-8-Kodierung
%C3%BC, was 6 Bytes statt 1 Byte entspricht). Dies reduziert den effektiv nutzbaren Speicherplatz innerhalb der 4-KB-Grenze erheblich.
5. Das "Header-Limit" des Webservers
Dies ist eine oft übersehene Grenze. Da Cookies bei jeder Anfrage vom Browser an den Server im HTTP-Header mitgeschickt werden, vergrößern sie das Datenvolumen der Anfrage.
- Webserver wie Apache oder Nginx haben Limits für die maximale Größe des HTTP-Headers (oft 8 KB oder 16 KB).
- Wenn man viele Cookies hat, die zusammen 12 KB groß sind, der Server aber nur 8 KB Header erlaubt, wird der Server die Anfrage mit einem Fehler (z. B.
413 Request Entity Too Largeoder400 Bad Request) ablehnen.
Warum gibt es diese Grenzen?
- Performance: Da Cookies bei jedem Request (auch für Bilder, CSS, JS) mitgesendet werden, würde eine riesige Cookie-Menge das Surfen extrem verlangsamen (Upstream-Belastung).
- Sicherheit/DoS: Sehr große Header könnten genutzt werden, um Pufferüberläufe zu provozieren oder Serverressourcen durch gigantische Anfragen lahmzulegen.
- Speichermanagement: Browser sollen nicht unbegrenzt Festplattenplatz für Tracking-Daten oder temporäre Informationen opfern müssen.
Moderne Alternativen
Wegen dieser strengen Limits und der Performance-Nachteile nutzen moderne Webanwendungen für größere Datenmengen meist andere Technologien:
- Web Storage (LocalStorage / SessionStorage): Erlaubt meist 5 MB bis 10 MB pro Domain und wird nicht bei jedem HTTP-Request an den Server gesendet.
- IndexedDB: Eine clientseitige Datenbank für nahezu unbegrenzte (bzw. durch den Festplattenplatz begrenzte) Datenmengen.