Was ist die maximale Größe des Cookie-Schlüssels eines Webbrowsers?

300

Was ist die maximale Größe des Cookie-Schlüssels eines Webbrowsers?

Ich weiß, dass die maximale Größe eines Cookies 4 KB beträgt, aber hat der Schlüssel auch eine Einschränkung?

user77480
quelle

Antworten:

359

Das 4K-Limit, über das Sie gelesen haben, gilt für das gesamte Cookie, einschließlich Name, Wert, Ablaufdatum usw. Wenn Sie die meisten Browser unterstützen möchten, empfehle ich, den Namen unter 4000 Byte und die Gesamtgröße des Cookies unter 4093 Byte zu halten.

Eines ist zu beachten: Wenn der Name zu groß ist, können Sie das Cookie nicht löschen (zumindest in JavaScript). Ein Cookie wird gelöscht, indem es aktualisiert und auf Ablauf gesetzt wird. Wenn der Name zu groß ist, z. B. 4090 Byte, konnte ich kein Ablaufdatum festlegen. Ich habe das nur aus Interesse untersucht, nicht dass ich vorhabe, einen so großen Namen zu haben.

Um mehr darüber zu erfahren, finden Sie hier die " Browser-Cookie-Grenzwerte " für gängige Browser.


Wenn Sie zu diesem Thema die meisten Browser unterstützen möchten, sollten Sie 50 Cookies pro Domain und 4093 Bytes pro Domain nicht überschreiten . Das heißt, die Größe aller Cookies sollte 4093 Byte nicht überschreiten.

Dies bedeutet, dass Sie 1 Cookie mit 4093 Bytes oder 2 Cookies mit 2045 Bytes usw. haben können.


Früher habe ich aufgrund von IE7 4095 Bytes gesagt, jetzt kommt Mobile Safari mit 4096 Bytes mit einem Overhead von 3 Bytes pro Cookie, also maximal 4093 Bytes.

Iain
quelle
14
Das 4K-Limit bezieht sich auf alle Cookies unter einer bestimmten Domain. Wenn dieses Limit erreicht ist, können Sie wahrscheinlich kein neues Cookie erstellen.
ulkas
6
@ulkas: Ich habe das jetzt hinzugefügt. Sobald das Limit erreicht ist, das ich in vielen Browsern beobachtet habe, können Sie neue Cookies erstellen, aber es werden einige der vorhandenen gelöscht.
Iain
1
Hinweis: RFC 2965 wurde veraltet und durch RFC 6265 ersetzt. Der Grenzwertabschnitt ist weitgehend unverändert (siehe: tools.ietf.org/html/rfc6265#section-6.1 ), aber RFC 6265 ist jetzt die kanonische Quelle.
Jim OHalloran
107

Tatsächlich gibt RFC 2965, das Dokument, das die Funktionsweise von Cookies definiert, an, dass der Schlüssel oder die Wertgröße eines Cookies nicht maximal lang sein darf , und empfiehlt Implementierungen, beliebig große Cookies zu unterstützen. Das Implementierungsmaximum jedes Browsers ist notwendigerweise unterschiedlich. Konsultieren Sie daher die Dokumentation des jeweiligen Browsers.

Siehe Abschnitt 5.3, "Implementierungsgrenzen", im RFC .

John Feminella
quelle
13
Wie üblich scheinen "spec" und "real-world" völlig unterschiedlich zu sein. Da Cookies mit JEDER http-Anfrage gesendet werden, ist es eigentlich gut, dass es Grenzen gibt.
BenSwayne
3
Das ist eine ziemlich nutzlose Spezifikation, wenn es tatsächlich Grenzen gibt! Dies ist jedoch die "richtige" Antwort!
Begrenzte Versöhnung
3
Ich verstehe nicht, warum Browser diese Spezifikation nicht befolgen. Es gibt keinen Grund, warum ich nicht in der Lage sein sollte, mehr als 4 KB (was nicht so viel ist) in ein Cookie zu kopieren, wenn bereits Dinge wie localStorage vorhanden sind.
William
1
Hinweis: RFC 2965 wurde veraltet und durch RFC 6265 ersetzt. Der Grenzwertabschnitt ist weitgehend unverändert (siehe: tools.ietf.org/html/rfc6265#section-6.1 ), aber RFC 6265 ist jetzt die kanonische Quelle.
Jim OHalloran
42

Nachdem ich einige Browser selbst getestet und Browser Shots verwendet habe, habe ich die folgende Liste zusammengestellt

Geben Sie hier die Bildbeschreibung ein

Behnam Mohammadi
quelle
3
Beantwortet am 18-02-2017 LOL, aber die Versionen sind sehr älter veraltet.
Ajmal Praveen
3
@ AjmalPraveen Das liegt daran, dass diese Antwort von dieser Site kopiert wurde (obwohl eine ältere Version, wie Sie sagten). Eine Quelle wäre nett gewesen, so dass interessierte Leute sich eine aktuellere Quelle ansehen können
Robby Groot
4
Diese genaue Tabelle ist aktualisiert und verfügbar unter browsercookielimits.squawky.net
gskema
39

Sie können auch Webspeicher verwenden, wenn die App-Spezifikationen dies zulassen (IE8 + wird unterstützt).

Es verfügt über 5 Millionen (die meisten Browser) oder 10 Millionen (IE) Speicher.

" Web Storage (Second Edition) " ist die API und " HTML5 Local Storage " ist ein schneller Start.

Michael
quelle
4
Hierbei ist wahrscheinlich zu beachten, dass eine Einschränkung bei der Verwendung von Webspeicher darin besteht, dass Daten, die im Webspeicher gespeichert sind, ohne Problemumgehung nur auf HTTP ODER HTTPS gespeichert werden können, aber nicht zwischen ihnen geteilt werden (auch nicht für dieselbe Site).
Ilasno
2
@ilasno Afaik Die gleiche Einschränkung besteht für herkömmliche Cookies.
Steve Midgley
Die wichtigste Einschränkung ist, dass der Webspeicher und der lokale Speicher nur über den Browser und nicht über den Server zugänglich sind. Dies ist auf jeden Fall zu beachten, wenn Sie zwischen diesen und Cookies wählen, die sowohl auf dem Browser als auch auf dem Server lesbar sind.
Vadorequest
16

Ein Cookie-Schlüssel (zur Identifizierung einer Sitzung) und ein Cookie werden auf unterschiedliche Weise verwendet. Das Limit wäre also das gleiche. Laut Microsoft sind es 4096 Bytes.

MSDN

Cookies sind normalerweise auf 4096 Byte begrenzt und Sie können nicht mehr als 20 Cookies pro Site speichern. Wenn Sie ein einzelnes Cookie mit Unterschlüsseln verwenden, verwenden Sie weniger der 20 Cookies, die Ihrer Website zugewiesen sind. Darüber hinaus benötigt ein einzelnes Cookie etwa 50 Zeichen für den Overhead (Ablaufinformationen usw.) sowie die Länge des darin gespeicherten Werts, die alle auf das 4096-Byte-Limit angerechnet werden. Wenn Sie fünf Unterschlüssel anstelle von fünf separaten Cookies speichern, sparen Sie den Overhead der separaten Cookies und können etwa 200 Byte speichern.

cgreeno
quelle
7
Übrigens, nur weil Sie ungefähr 4 KB Browser-Cookie-Speicher zum Spielen haben, sollten Sie ernsthaft überlegen, ob dies eine gute Idee ist oder nicht.
NotMe
Können Sie bestätigen, ob die Anzahl der Cookies pro Domain / Site nicht mehr als 20 betragen darf? oder ist es inzwischen erhöht?
Mutant
2

Diese Zeichenfolge ist keine vollständige direkte Antwort auf die ursprüngliche Frage, aber relevant für Neugierige, die schnell versuchen, ihre Planung für die Speicherung von Cookie-Informationen visuell zu verstehen, ohne einen komplexen Begrenzer-Algorithmus zu implementieren. Sie besteht aus 4096 ASCII-Zeichenbytes:

"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmn"

stackuser83
quelle