Qual è la dimensione massima della chiave del cookie di un browser Web?


300

Qual è la dimensione massima della chiave del cookie di un browser Web?

So che la dimensione massima di un cookie è 4KB, ma anche la chiave ha una limitazione?

Risposte:


359

Il limite 4K di cui leggi è per l'intero cookie, inclusi nome, valore, data di scadenza, ecc. Se desideri supportare la maggior parte dei browser, ti suggerisco di mantenere il nome sotto i 4000 byte e la dimensione complessiva del cookie sotto i 4093 byte.

Una cosa da fare attenzione: se il nome è troppo grande non è possibile eliminare il cookie (almeno in JavaScript). Un cookie viene eliminato aggiornandolo e impostandolo in modo da scadere. Se il nome è troppo grande, diciamo 4090 byte, ho scoperto che non sono riuscito a impostare una data di scadenza. Ho solo guardato questo per interesse, non che ho intenzione di avere un nome così grande.

Per saperne di più, ecco i " Limiti dei cookie del browser " per i browser comuni.


Se sei in tema, se vuoi supportare la maggior parte dei browser, non superare i 50 cookie per dominio e 4093 byte per dominio . Cioè, la dimensione di tutti i cookie non deve superare i 4093 byte.

Ciò significa che puoi avere 1 cookie da 4093 byte o 2 cookie da 2045 byte, ecc.


Ero solito dire 4095 byte a causa di IE7, tuttavia ora Mobile Safari arriva con 4096 byte con un overhead di 3 byte per cookie, quindi 4093 byte max.


14
il limite 4K si riferisce a tutti i cookie di un dominio specifico, quindi quando viene raggiunto questo limite, sarà probabilmente impossibile creare un nuovo cookie.
Ulkas,

6
@ulkas: l'ho aggiunto adesso. Una volta raggiunto il limite ho osservato in molti browser che è possibile creare nuovi cookie, ma eliminerà un mucchio di quelli esistenti.
Iain,

1
Nota: RFC 2965 è stato obsoleto e sostituito da RFC 6265. La sezione dei limiti è sostanzialmente invariata (vedere: tools.ietf.org/html/rfc6265#section-6.1 ), ma RFC 6265 è ora la fonte canonica.
Jim OHalloran,

107

In realtà, RFC 2965, il documento che definisce il funzionamento dei cookie, specifica che non dovrebbe esserci una lunghezza massima della chiave di un cookie o delle dimensioni del valore e incoraggia le implementazioni a supportare arbitrariamente cookie di grandi dimensioni . L'implementazione massima di ciascun browser sarà necessariamente diversa, quindi consulta la documentazione del singolo browser.

Vedere la sezione 5.3, "Limiti di attuazione", nella RFC .


13
Come al solito, "spec" e "mondo reale" sembrano essere completamente diversi. Poiché i cookie vengono inviati con OGNI richiesta http, in realtà è una buona cosa che ci siano dei limiti.
BenSwayne,

3
Questa è una specifica piuttosto inutile se in realtà ci sono dei limiti! Questa è la risposta "corretta", però!
Espiazione limitata

3
Non capisco perché i browser scelgono di non seguire queste specifiche. Non c'è motivo per cui non dovrei essere in grado di scaricare più di 4KB (che non è molto) in un cookie, quando esistono già cose come localStorage.
William,

1
Nota: RFC 2965 è stato obsoleto e sostituito da RFC 6265. La sezione dei limiti è sostanzialmente invariata (vedere: tools.ietf.org/html/rfc6265#section-6.1 ), ma RFC 6265 è ora la fonte canonica.
Jim OHalloran,

42

Dopo aver testato personalmente alcuni browser e aver utilizzato i Browser Shots, ho compilato il seguente elenco

inserisci qui la descrizione dell'immagine


3
Risposto al 18-02-2017 LOL, ma le versioni sono molto datate.
Ajmal Praveen,

3
@AjmalPraveen Questo perché questa risposta viene copiata da questo sito (anche se una versione precedente, come hai detto). Una fonte sarebbe stata carina, quindi le persone interessate possono guardare a una fonte più aggiornata
Robby Groot,

4
Questa tabella esatta è aggiornata e disponibile su browsercookielimits.squawky.net
gskema

39

Puoi anche utilizzare l' archiviazione Web anche se le specifiche dell'app lo consentono (ha il supporto per IE8 +).

Ha 5M (la maggior parte dei browser) o 10M (IE) di memoria a sua disposizione.

" Archiviazione Web (seconda edizione) " è l'API e " Archiviazione locale HTML5 " è un avvio rapido.


4
Dovrebbe probabilmente essere notato qui che un avvertimento per l'utilizzo della memoria Web è che, senza una soluzione alternativa, i dati memorizzati nella memoria Web possono essere archiviati / accessibili solo da HTTP o HTTPS, ma non condivisi tra loro (anche per lo stesso sito).
ilasno,

2
@ilasno Afaik esiste la stessa limitazione per i cookie tradizionali.
Steve Midgley,

L'avvertenza più importante è piuttosto che l'archiviazione Web, l'archiviazione delle sessioni e l'archiviazione locale sono accessibili solo dal browser, non dal server. Questo è sicuramente qualcosa da considerare quando si sceglie tra uno di questi e cookie, che sono leggibili sia sul browser che sul server.
Vadorequest,

16

Una chiave cookie (utilizzata per identificare una sessione) e un cookie sono la stessa cosa utilizzata in modi diversi. Quindi il limite sarebbe lo stesso. Secondo Microsoft i suoi 4096 byte.

MSDN

i cookie sono generalmente limitati a 4096 byte e non è possibile memorizzare più di 20 cookie per sito. Usando un singolo cookie con sottochiavi, usi meno di quei 20 cookie a cui è assegnato il tuo sito. Inoltre, un singolo cookie occupa circa 50 caratteri per overhead (informazioni sulla scadenza e così via), oltre alla lunghezza del valore che memorizzi in esso, il che vale tutto per il limite di 4096 byte. Se si memorizzano cinque sottochiavi anziché cinque cookie separati, si salva il sovraccarico dei cookie separati e si possono risparmiare circa 200 byte.


7
Per inciso, solo perché hai circa 4 KB di spazio di archiviazione dei cookie del browser per giocare con te, dovresti considerare seriamente se questa è una buona idea o meno.
NotMe

Puoi confermare se per dominio / sito il numero di cookie non può superare più di 20? o è aumentato ormai?
Mutante,

2

Non completamente una risposta diretta alla domanda originale, ma rilevante per i curiosi che cercano rapidamente di comprendere visivamente la pianificazione della memorizzazione delle informazioni sui cookie senza implementare un algoritmo limitatore complesso, questa stringa è 4096 byte di caratteri ASCII:

"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmn"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.