Jaki jest maksymalny rozmiar pliku cookie przeglądarki internetowej?

300

Jaki jest maksymalny rozmiar pliku cookie przeglądarki internetowej?

Wiem, że maksymalny rozmiar pliku cookie to 4KB, ale czy klucz ma również ograniczenie?

użytkownik77480
źródło

Odpowiedzi:

359

Limit 4K, o którym czytasz, dotyczy całego pliku cookie, w tym nazwy, wartości, daty ważności itp. Jeśli chcesz obsługiwać większość przeglądarek, sugeruję utrzymanie nazwy poniżej 4000 bajtów, a ogólny rozmiar pliku cookie poniżej 4093 bajtów.

Należy zachować ostrożność: jeśli nazwa jest zbyt duża, nie można usunąć pliku cookie (przynajmniej w JavaScript). Plik cookie jest usuwany poprzez jego aktualizację i wygaśnięcie. Jeśli nazwa jest za duża, powiedzmy 4090 bajtów, okazało się, że nie mogę ustawić daty ważności. Patrzyłem tylko na to z zainteresowaniem, nie dlatego, że planuję mieć tak dużą nazwę.

Aby przeczytać więcej na ten temat, oto „ Limity plików cookie przeglądarki ” dla popularnych przeglądarek.


W tym temacie, jeśli chcesz obsługiwać większość przeglądarek, nie przekraczaj 50 plików cookie na domenę i 4093 bajtów na domenę . Oznacza to, że rozmiar wszystkich plików cookie nie powinien przekraczać 4093 bajtów.

Oznacza to, że możesz mieć 1 plik cookie o wielkości 4093 bajtów lub 2 pliki cookie o wielkości 2045 bajtów itp.


Zwykłem mówić 4095 bajtów z powodu IE7, jednak teraz Mobile Safari ma 4096 bajtów z 3 bajtowym narzutem na plik cookie, więc maksymalnie 4093 bajtów.

Iain
źródło
14
limit 4K odnosi się do wszystkich plików cookie w określonej domenie - dlatego po osiągnięciu tego limitu prawdopodobnie nie będzie możliwe utworzenie nowego pliku cookie.
ulkas
6
@ulkas: Dodałem to teraz. Po osiągnięciu limitu zauważyłem w wielu przeglądarkach, że możesz tworzyć nowe pliki cookie, ale usunie to kilka istniejących.
Iain
1
Uwaga: RFC 2965 został przestarzały i zastąpiony przez RFC 6265. Sekcja limitów jest w dużej mierze niezmieniona (patrz: tools.ietf.org/html/rfc6265#section-6.1 ), ale RFC 6265 jest teraz źródłem kanonicznym.
Jim OHalloran,
107

W rzeczywistości RFC 2965, dokument określający sposób działania plików cookie, określa, że ​​nie powinna istnieć maksymalna długość klucza lub wartości pliku cookie , i zachęca do implementacji do obsługi dowolnie dużych plików cookie. Maksymalna implementacja każdej przeglądarki będzie z konieczności inna, więc zapoznaj się z dokumentacją poszczególnych przeglądarek.

Patrz sekcja 5.3, „Limity implementacji” w RFC .

John Feminella
źródło
13
Jak zwykle „spec” i „real-world” wydają się zupełnie inne. Ponieważ pliki cookie są wysyłane z KAŻDYM żądaniem HTTP, dobrze jest, że istnieją ograniczenia.
BenSwayne
3
To dość bezużyteczna specyfikacja, jeśli w rzeczywistości istnieją ograniczenia! Jest to jednak „poprawna” odpowiedź!
Ograniczone Zadośćuczynienie z
3
Nie rozumiem, dlaczego przeglądarki nie stosują się do tej specyfikacji. Nie ma powodu, dla którego nie powinienem móc zrzucić więcej niż 4KB (co nie jest aż tak duże) do pliku cookie, skoro takie rzeczy jak localStorage już istnieją.
William
1
Uwaga: RFC 2965 został przestarzały i zastąpiony przez RFC 6265. Sekcja limitów jest w dużej mierze niezmieniona (patrz: tools.ietf.org/html/rfc6265#section-6.1 ), ale RFC 6265 jest teraz źródłem kanonicznym.
Jim OHalloran,
42

Po samodzielnym przetestowaniu kilku przeglądarek i użyciu strzałów w przeglądarce skompilowałem następującą listę

wprowadź opis zdjęcia tutaj

Behnam Mohammadi
źródło
3
Odpowiedzi na 18-02-2017 LOL, ale że wersje są bardzo starsze, przestarzałe.
Ajmal Praveen,
3
@AjmalPraveen To dlatego, że ta odpowiedź jest kopiowana z tej strony (chociaż starsza wersja, jak mówiłeś). Źródło byłoby miłe, więc zainteresowani ludzie mogą spojrzeć na bardziej aktualne źródło
Robby Groot
4
Ta dokładna tabela jest zaktualizowana i dostępna pod adresem browsercookielimits.squawky.net
gskema
39

Możesz także użyć pamięci internetowej, jeśli pozwala na to specyfikacja aplikacji (obsługuje IE8 +).

Ma do dyspozycji 5 milionów pamięci (większość przeglądarek) lub 10 milionów pamięci (IE).

Web Storage (Second Edition) ” to interfejs API, a „ HTML5 Local Storage ” to szybki start.

Michał
źródło
4
Należy prawdopodobnie zauważyć, że zastrzeżeniem dotyczącym korzystania z pamięci internetowej jest to, że bez obejścia dane przechowywane w pamięci internetowej mogą być przechowywane na / dostępne tylko z HTTP lub HTTPS, ale nie mogą być udostępniane między nimi (nawet dla tej samej strony).
ilasno
2
@ilasno Afaik to samo ograniczenie dotyczy tradycyjnych plików cookie.
Steve Midgley,
Najważniejszym zastrzeżeniem jest raczej niż pamięć internetowa, pamięć sesji i pamięć lokalna są dostępne tylko z przeglądarki, a nie z serwera. To zdecydowanie coś do rozważenia przy wyborze jednego z nich i plików cookie, które można odczytać zarówno w przeglądarce, jak i na serwerze.
Vadorequest
16

Klucz cookie (używany do identyfikacji sesji) i cookie to to samo, co używane na różne sposoby. Limit byłby taki sam. Według Microsoft jego 4096 bajtów.

MSDN

pliki cookie są zwykle ograniczone do 4096 bajtów i nie można przechowywać więcej niż 20 plików cookie na witrynę. Używając jednego pliku cookie z podkluczami, używasz mniej z tych 20 plików cookie przydzielonych Twojej witrynie. Ponadto pojedynczy plik cookie zajmuje około 50 znaków narzutu (informacje o wygaśnięciu itd.), A także długość przechowywanej w nim wartości, z których wszystkie są wliczane do limitu 4096 bajtów. Jeśli przechowujesz pięć podkluczy zamiast pięciu oddzielnych plików cookie, zapisujesz narzut oddzielnych plików cookie i możesz zaoszczędzić około 200 bajtów.

cgreeno
źródło
7
Nawiasem mówiąc, tylko dlatego, że masz około 4KB pamięci do przechowywania plików cookie w przeglądarce, powinieneś poważnie rozważyć, czy to dobry pomysł, czy nie.
NotMe
Czy możesz potwierdzić, czy na domenę / witrynę liczba plików cookie nie może przekraczać 20? czy jest już zwiększony?
Mutant
2

Nie do końca bezpośrednia odpowiedź na pierwotne pytanie, ale istotna dla ciekawskich, którzy szybko próbują wizualnie zrozumieć swoje plany przechowywania informacji o plikach cookie bez implementacji złożonego algorytmu ograniczającego, ciąg ten ma 4096 bajtów znaków ASCII:

"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmn"

stackuser83
źródło