Qual é o tamanho máximo da chave de cookie de um navegador da web?

300

Qual é o tamanho máximo da chave de cookie de um navegador da web?

Sei que o tamanho máximo de um cookie é 4KB, mas a chave também tem uma limitação?

user77480
fonte

Respostas:

359

O limite de 4K que você lê é para todo o cookie, incluindo nome, valor, data de validade etc. Se você deseja dar suporte à maioria dos navegadores, sugiro manter o nome em 4000 bytes e o tamanho geral do cookie em 4093 bytes.

Uma coisa a ter cuidado: se o nome for muito grande, você não poderá excluir o cookie (pelo menos em JavaScript). Um cookie é excluído atualizando-o e configurando-o para expirar. Se o nome for muito grande, digamos 4090 bytes, descobri que não era possível definir uma data de validade. Eu só olhei para isso por interesse, não que eu planejasse ter um nome tão grande.

Para ler mais sobre isso, aqui estão os " Limites de cookies do navegador " para navegadores comuns.


Enquanto estiver no assunto, se você quiser dar suporte à maioria dos navegadores, não exceda 50 cookies por domínio e 4093 bytes por domínio . Ou seja, o tamanho de todos os cookies não deve exceder 4093 bytes.

Isso significa que você pode ter 1 cookie de 4093 bytes ou 2 cookies de 2045 bytes, etc.


Eu costumava dizer 4095 bytes devido ao IE7, no entanto, agora o Mobile Safari vem com 4096 bytes com uma sobrecarga de 3 bytes por cookie, para um máximo de 4093 bytes.

Iain
fonte
14
o limite de 4K refere-se a todos os cookies em um domínio específico. Portanto, quando esse limite for atingido, você provavelmente não poderá criar um novo cookie.
ulkas
6
@ulkas: eu adicionei isso agora. Quando o limite é atingido, observei em muitos navegadores que você pode criar novos cookies, mas ele excluirá muitos dos existentes.
Iain
1
Nota: O RFC 2965 foi obsoleto e substituído pelo RFC 6265. A seção de limites permanece praticamente inalterada (consulte: tools.ietf.org/html/rfc6265#section-6.1 ), mas o RFC 6265 agora é a fonte canônica.
Jim OHalloran
107

Na verdade, a RFC 2965, o documento que define como os cookies funcionam, especifica que não deve haver comprimento máximo da chave ou do tamanho do valor de um cookie e incentiva implementações para oferecer suporte a cookies arbitrariamente grandes . A implementação máxima de cada navegador será necessariamente diferente, portanto, consulte a documentação individual do navegador.

Consulte a seção 5.3, "Limites de implementação", na RFC .

John Feminella
fonte
13
Como sempre, "spec" e "mundo real" parecem ser completamente diferentes. Como os cookies são enviados com TODAS as solicitações http, é realmente bom que haja limites.
BenSwayne
3
Essa é uma especificação bastante inútil se na realidade existem limites! Porém, esta é a resposta "correta"!
Expiação limitada
3
Não entendo por que os navegadores optam por não seguir esta especificação. Não há razão para que eu não consiga despejar mais de 4KB (o que não é muito) em um cookie, quando coisas como localStorage já existem.
William
1
Nota: O RFC 2965 foi obsoleto e substituído pelo RFC 6265. A seção de limites permanece praticamente inalterada (consulte: tools.ietf.org/html/rfc6265#section-6.1 ), mas o RFC 6265 agora é a fonte canônica.
Jim OHalloran
42

Depois de testar alguns navegadores e usar as Telas do navegador, compilei a lista a seguir

insira a descrição da imagem aqui

Behnam Mohammadi
fonte
3
Respondida em 18-02-2017 LOL, mas as versões são muito antigas e estão fora de moda.
Ajmal Praveen
3
@AjmalPraveen Isso ocorre porque esta resposta é copiada deste site (embora seja uma versão mais antiga, como você disse). Uma fonte teria sido bom, para que as pessoas interessadas podem olhar para uma fonte mais up-to-date
Robby Groot
4
Esta tabela exata está atualizada e disponível em browsercookielimits.squawky.net
gskema
39

Você também pode usar o armazenamento na Web se as especificações do aplicativo permitirem isso (ele é compatível com o IE8 +).

Possui 5M (maioria dos navegadores) ou 10M (IE) de memória à sua disposição.

" Web Storage (Second Edition) " é a API e " HTML5 Local Storage " é um início rápido.

Michael
fonte
4
Provavelmente, deve-se observar aqui que uma ressalva para o uso do armazenamento na Web é que, sem uma solução alternativa, os dados armazenados no armazenamento na Web só podem ser armazenados / acessados ​​a partir de HTTP OU HTTPS, mas não compartilhados entre eles (mesmo no mesmo site).
precisa saber é
2
@ilasno Afaik existe a mesma limitação para os cookies tradicionais.
precisa
A ressalva mais importante é que, em vez de armazenamento na Web, armazenamento de sessão e armazenamento local são acessíveis apenas no navegador, não no servidor. Definitivamente, isso é algo a considerar ao escolher entre qualquer um desses e cookies, que são legíveis no navegador e no servidor.
Vadorequest 29/01
16

Uma chave de cookie (usada para identificar uma sessão) e um cookie são a mesma coisa sendo usada de maneiras diferentes. Portanto, o limite seria o mesmo. De acordo com a Microsoft, seus 4096 bytes.

MSDN

os cookies geralmente são limitados a 4096 bytes e você não pode armazenar mais de 20 cookies por site. Ao usar um único cookie com subchaves, você usa menos desses 20 cookies que seu site está alocado. Além disso, um único cookie ocupa cerca de 50 caracteres para sobrecarga (informações de expiração etc.), mais o tamanho do valor que você armazena nele, o que conta para o limite de 4096 bytes. Se você armazenar cinco subchaves em vez de cinco cookies separados, salve a sobrecarga dos cookies separados e poderá salvar cerca de 200 bytes.

cgreeno
fonte
7
Aliás, só porque você tem cerca de 4KB de armazenamento de cookies do navegador para jogar com você deve considerar seriamente se é uma boa ideia ou não.
NotMe
Você pode confirmar se, por domínio / site, o número de cookies não pode exceder mais de 20? ou já aumentou?
Mutant
2

Não é uma resposta totalmente direta à pergunta original, mas é relevante para os curiosos que tentam entender visualmente seu planejamento de armazenamento de informações de cookies sem implementar um algoritmo limitador complexo, essa sequência tem 4096 bytes de caracteres ASCII:

"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmn"

stackuser83
fonte