Quelle est la taille maximale de la clé d'un cookie de navigateur Web?

300

Quelle est la taille maximale de la clé d'un cookie de navigateur Web?

Je sais que la taille maximale d'un cookie est de 4 Ko, mais la clé a-t-elle également une limitation?

user77480
la source

Réponses:

359

La limite de 4K que vous lisez concerne le cookie entier, y compris le nom, la valeur, la date d'expiration, etc. Si vous souhaitez prendre en charge la plupart des navigateurs, je suggère de garder le nom sous 4000 octets et la taille globale du cookie sous 4093 octets.

Une chose à laquelle faire attention: si le nom est trop gros, vous ne pouvez pas supprimer le cookie (au moins en JavaScript). Un cookie est supprimé en le mettant à jour et en le définissant pour expirer. Si le nom est trop gros, disons 4090 octets, j'ai trouvé que je ne pouvais pas définir de date d'expiration. Je n'ai étudié cela que par intérêt, pas que je prévois d'avoir un nom aussi gros.

Pour en savoir plus à ce sujet, voici les " Limites des cookies du navigateur " pour les navigateurs courants.


Sur le sujet, si vous souhaitez prendre en charge la plupart des navigateurs, ne dépassez pas 50 cookies par domaine et 4093 octets par domaine . Autrement dit, la taille de tous les cookies ne doit pas dépasser 4093 octets.

Cela signifie que vous pouvez avoir 1 cookie de 4093 octets, ou 2 cookies de 2045 octets, etc.


J'avais l'habitude de dire 4095 octets en raison d'IE7, mais maintenant Mobile Safari est livré avec 4096 octets avec une surcharge de 3 octets par cookie, donc 4093 octets max.

Iain
la source
14
la limite 4K fait référence à tous les cookies sous un domaine spécifique - donc lorsque cette limite est atteinte, vous ne pourrez probablement pas créer un nouveau cookie.
ulkas
6
@ulkas: J'ai ajouté ça maintenant. Une fois la limite atteinte, j'ai observé que dans de nombreux navigateurs, vous pouvez créer de nouveaux cookies, mais cela supprimera un tas des cookies existants.
Iain
1
Remarque: la RFC 2965 a été obsolète et remplacée par la RFC 6265. La section des limites est en grande partie inchangée (voir: tools.ietf.org/html/rfc6265#section-6.1 ), mais la RFC 6265 est maintenant la source canonique.
Jim OHalloran
107

En fait, la RFC 2965, le document qui définit le fonctionnement des cookies, spécifie qu'il ne doit pas y avoir de longueur maximale de clé ou de taille de valeur de cookie , et encourage les implémentations à prendre en charge des tailles arbitraires cookies de . Le maximum d'implémentation de chaque navigateur sera nécessairement différent, alors consultez la documentation de chaque navigateur.

Voir la section 5.3, «Limites de mise en œuvre», dans le RFC .

John Feminella
la source
13
Comme d'habitude, "spec" et "real-world" semblent être complètement différents. Parce que les cookies sont envoyés avec CHAQUE demande http, c'est en fait une bonne chose qu'il y ait des limites.
BenSwayne
3
C'est une spécification assez inutile si en réalité il y a des limites! C'est la "bonne" réponse, cependant!
Expiation limitée
3
Je ne comprends pas pourquoi les navigateurs choisissent de ne pas suivre cette spécification. Il n'y a aucune raison pour que je ne puisse pas vider plus de 4 Ko (ce qui n'est pas tant que ça) dans un cookie, alors que des choses comme localStorage existent déjà.
William
1
Remarque: la RFC 2965 a été obsolète et remplacée par la RFC 6265. La section des limites est en grande partie inchangée (voir: tools.ietf.org/html/rfc6265#section-6.1 ), mais la RFC 6265 est maintenant la source canonique.
Jim OHalloran
42

Après avoir testé quelques navigateurs moi-même et utilisé des captures de navigateur, j'ai compilé la liste suivante

entrez la description de l'image ici

Behnam Mohammadi
la source
3
Répondu le 18-02-2017 LOL, mais que les versions sont très anciennes.
Ajmal Praveen
3
@AjmalPraveen C'est parce que cette réponse est copiée à partir de ce site (bien qu'une version plus ancienne, comme vous l'avez dit). Une source aurait été bien, donc les personnes intéressées peuvent regarder une source plus à jour
Robby Groot
4
Ce tableau exact est mis à jour et disponible sur navigercookielimits.squawky.net
gskema
39

Vous pouvez également utiliser le Web stockage si les spécifications de l'application le permettent (il prend en charge IE8 +).

Il a 5M (la plupart des navigateurs) ou 10M (IE) de mémoire.

" Web Storage (Second Edition) " est l'API et " HTML5 Local Storage " est un démarrage rapide.

Michael
la source
4
Il convient probablement de noter ici qu'une mise en garde pour l'utilisation du stockage Web est que, sans solution de contournement, les données stockées dans le stockage Web peuvent uniquement être stockées sur / accessibles à partir de HTTP OU HTTPS, mais pas partagées entre eux (même pour le même site).
ilasno
2
@ilasno Afaik la même limitation existe pour les cookies traditionnels.
Steve Midgley
La mise en garde la plus importante est plutôt que le stockage Web, le stockage de session et le stockage local ne sont accessibles que depuis le navigateur, pas le serveur. C'est certainement quelque chose à considérer lors du choix entre l'un d'entre eux et les cookies, qui sont lisibles à la fois sur le navigateur et sur le serveur.
Vadorequest
16

Une clé de cookie (utilisée pour identifier une session) et un cookie sont la même chose utilisée de différentes manières. La limite serait donc la même. Selon Microsoft, ses 4096 octets.

MSDN

les cookies sont généralement limités à 4096 octets et vous ne pouvez pas stocker plus de 20 cookies par site. En utilisant un seul cookie avec des sous-clés, vous utilisez moins de ces 20 cookies attribués à votre site. En outre, un seul cookie prend environ 50 caractères pour les frais généraux (informations d'expiration, etc.), plus la longueur de la valeur que vous y stockez, qui compte tous pour la limite de 4096 octets. Si vous stockez cinq sous-clés au lieu de cinq cookies distincts, vous économisez la surcharge des cookies séparés et pouvez économiser environ 200 octets.

cgreeno
la source
7
Soit dit en passant, juste parce que vous avez environ 4 Ko d'espace de stockage de cookies pour jouer avec vous, vous devez sérieusement considérer si c'est une bonne idée ou non.
NotMe
Pouvez-vous confirmer si, par domaine / site, le nombre de cookies ne peut pas dépasser 20? ou son augmenté maintenant?
Mutant
2

Pas complètement entièrement une réponse directe à la question d'origine, mais pertinente pour les curieux essayant rapidement de comprendre visuellement leur planification de stockage d'informations sur les cookies sans implémenter un algorithme de limitation complexe, cette chaîne est de 4096 octets de caractères ASCII:

"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmn"

stackuser83
la source