Каков максимальный размер ключа cookie веб-браузера?

300

Каков максимальный размер ключа cookie веб-браузера?

Я знаю, что максимальный размер файла cookie составляет 4 КБ, но есть ли у ключа ограничение?

user77480
источник

Ответы:

359

Ограничение в 4 КБ, о котором вы читаете, относится ко всему файлу cookie, включая имя, значение, дату истечения срока действия и т. Д. Если вы хотите поддерживать большинство браузеров, я рекомендую оставить имя менее 4000 байт, а общий размер файла cookie - менее 4093 байт.

Остерегайтесь одной вещи: если имя слишком большое, вы не можете удалить cookie (по крайней мере, в JavaScript). Файл cookie удаляется путем обновления и установки срока его действия. Если имя слишком большое, скажем, 4090 байт, я обнаружил, что не могу установить дату окончания срока действия. Я только смотрел на это из интереса, не то, чтобы я планировал иметь такое большое имя.

Чтобы узнать больше об этом, вот « Ограничения Cookie браузера » для обычных браузеров.


Что касается темы, если вы хотите поддерживать большинство браузеров, то не превышайте 50 файлов cookie на домен и 4093 байта на домен . То есть размер всех файлов cookie не должен превышать 4093 байта.

Это означает, что вы можете иметь 1 cookie размером 4093 байта или 2 cookie размером 2045 байтов и т. Д.


Я имел обыкновение говорить 4095 байтов из-за IE7, однако теперь Mobile Safari поставляется с 4096 байтами с 3-байтовыми накладными расходами на cookie, таким образом, максимум 4093 байта.

Iain
источник
14
ограничение 4K относится ко всем файлам cookie в определенном домене - таким образом, когда этот предел будет достигнут, вы, скорее всего, не сможете создать новый файл cookie.
ulkas
6
@ulkas: я добавил это сейчас. По достижении лимита, который я наблюдал во многих браузерах, вы можете создавать новые куки, но он удалит кучу существующих.
Iain
1
Примечание: RFC 2965 был устаревшим и заменен RFC 6265. Раздел ограничений в основном не изменился (см .: tools.ietf.org/html/rfc6265#section-6.1 ), но теперь RFC 6265 является каноническим источником.
Джим Охаллоран
107

Фактически, RFC 2965, документ, который определяет, как работают куки, указывает, что не должно быть максимальной длины ключа или значения значения куки , и поощряет реализации поддерживать произвольно большие куки. Максимум реализации каждого браузера обязательно будет разным, поэтому обратитесь к документации отдельного браузера.

См. Раздел 5.3 «Пределы реализации» в RFC .

Джон Феминелла
источник
13
Как обычно, "spec" и "real-world" кажутся совершенно разными. Поскольку файлы cookie отправляются с КАЖДЫМ запросом http, на самом деле хорошо, что существуют ограничения.
BenSwayne
3
Это довольно бесполезная спецификация, если на самом деле есть пределы! Это - "правильный" ответ, хотя!
Ограниченное Искупление
3
Я не понимаю, почему браузеры предпочитают не следовать этой спецификации. Нет причин, по которым я не смогу копировать больше 4КБ (что не так много) в куки, когда такие вещи, как localStorage уже существуют.
Уильям
1
Примечание: RFC 2965 был устаревшим и заменен RFC 6265. Раздел ограничений в основном не изменился (см .: tools.ietf.org/html/rfc6265#section-6.1 ), но теперь RFC 6265 является каноническим источником.
Джим Охаллоран
42

После тестирования нескольких браузеров и использования снимков браузера я составил следующий список

введите описание изображения здесь

Бехнам Мохаммади
источник
3
Ответ на 18-02-2017 LOL, но версии очень устарели.
Аджмал Правин
3
@AjmalPraveen Это потому, что этот ответ скопирован с этого сайта (хотя старая версия, как вы сказали). Источник был бы хорош, поэтому заинтересованные люди могут взглянуть на более актуальный источник
Робби Гроот
4
Эта точная таблица обновлена ​​и доступна на browsercookielimits.squawky.net
gskema
39

Вы также можете использовать веб- хранилище, если спецификация приложения позволяет вам это (он поддерживает IE8 +).

В его распоряжении 5M (большинство браузеров) или 10M (IE) памяти.

« Веб-хранилище (второе издание) » - это API, а « HTML5 Local Storage » - это быстрый старт.

Майкл
источник
4
Здесь, вероятно, следует отметить, что предостережение об использовании веб-хранилища заключается в том, что без обходного пути данные, хранящиеся в веб-хранилище, могут быть сохранены или доступны только по HTTP или HTTPS, но не могут использоваться ими совместно (даже для одного и того же сайта).
ilasno
2
@ilasno Afaik такое же ограничение существует для традиционных куки.
Стив Мидгли
Самое важное предупреждение, а не веб-хранилище, хранилище сеансов и локальное хранилище доступны только из браузера, а не с сервера. Это определенно необходимо учитывать при выборе между этими файлами и файлами cookie, которые доступны для чтения как в браузере, так и на сервере.
Vadorequest
16

Ключ cookie (используемый для идентификации сеанса) и cookie - это одно и то же, используемое по-разному. Таким образом, предел будет таким же. По данным Microsoft, его 4096 байт.

MSDN

Размер файлов cookie обычно ограничен 4096 байтами, и вы не можете хранить более 20 файлов cookie на сайт. Используя один файл cookie с подключами, вы используете меньшее количество из этих 20 файлов cookie, выделенных вашему сайту. Кроме того, один файл cookie занимает около 50 символов для служебных данных (информация об истечении срока действия и т. Д.) Плюс длина значения, которое вы храните в нем, и все это учитывает ограничение в 4096 байт. Если вы храните пять подразделов вместо пяти отдельных файлов cookie, вы сохраняете накладные расходы отдельных файлов cookie и можете сэкономить около 200 байт.

cgreeno
источник
7
Между прочим, только потому, что у вас есть около 4 КБ хранилища файлов cookie браузера, вы должны серьезно подумать, хорошая это идея или нет.
NotMe
Можете ли вы подтвердить, что для каждого домена / сайта количество файлов cookie не может превышать 20? или его сейчас увеличили?
Мутант
2

Эта строка не полностью является прямым ответом на исходный вопрос, но имеет отношение к любопытным, стремящимся наглядно понять свои планы хранения информации о файлах cookie без реализации алгоритма сложного ограничителя. Эта строка составляет 4096 символов ASCII:

"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmn"

stackuser83
источник