2009-08-12 17 views
1

J'ai mis en place un test A/B qui nécessitait une quantité importante de données à stocker temporairement dans un cookie. En testant mon code, j'ai réussi à obtenir le cookie sur 4ko. Safari a mis le cookie. Lors du chargement de la page suivante, Apache a renvoyé une erreur car le cookie était trop volumineux.Pourquoi Safari vous permet-il de définir des cookies sur 4 Ko?

J'ai également testé cela sur Firefox et il ignore simplement le cookie, ce qui me semble être le bon comportement.

J'ai déjà vu ça avant Gail. J'avais l'habitude d'obtenir des erreurs Bad Request et je devais supprimer mes cookies. C'était un problème connu qui a été résolu.

Je ne trouve rien en ligne sur Safari permettant les cookies de plus de 4 Ko. N'est-ce pas potentiellement dangereux? L'idée que nos utilisateurs pourraient être bloqués d'accéder à notre site et n'ont aucune idée de ce qui se passe est effrayante. Je ne sais pas d'un coup d'oeil comment il serait possible de supprimer ces cookies de notre côté s'ils devenaient trop gros.

Pourquoi Safari fait-il cela? Avez-vous d'autres navigateurs?

Répondre

3

http://www.nczonline.net/blog/2008/05/17/browser-cookie-restrictions/ dit que Firefox et Safari permettent les cookies jusqu'à 4097 caractères, IE 4095 et d'opéra 4096

il y a quelque chose ici au sujet de la résolution du problème lorsque l'erreur se produit, essentiellement le document d'erreur efface le cookie incriminé demande si la suite travaillera (heureusement) http://www.webmasterworld.com/forum92/1163.htm

+0

Merci. La deuxième page à laquelle vous avez un lien contient des conseils utiles, le cas échéant. – joshuaxls

0

La norme spécifie une certaine taille pour les cookies. Cependant, il ne spécifie pas de taille maximale. N'importe quel navigateur peut stocker un cookie de n'importe quelle taille, tant qu'il est à moins 4kb. En tant que développeur Web, vous essayez de créer uniquement des cookies qui fonctionnent dans tous les navigateurs. Ce n'est pas à safari de tenir votre main sur ce point - Il s'agit simplement de traiter la condition d'un gros cookie en l'acceptant, là où d'autres le rejettent. Ce n'est ni correct, ni incorrect. C'est simplement permis.

Je ne suis pas votre point de vue sur le fait qu'il soit potentiellement dangereux. Si un utilisateur est bloqué à partir de votre site, en raison d'un cookie que vous définissez ne fonctionne pas dans certains navigateurs, c'est votre faute, n'est-ce pas? Safari est en train de traiter avec les autres navigateurs.

+0

Oui, vous avez raison à propos des spécifications. Je trouve juste dommage que la façon dont les choses sont mises en place, il est facile de se faire prendre au piège avec les navigateurs acceptant les cookies surdimensionnés et les serveurs Web les rejetant. Webkit semble être la valeur aberrante ici. Les autres navigateurs que j'ai testés n'accepteront pas le cookie. La recherche de "cookie de demande incorrecte" indique que Google, Youtube et d'autres sites ont rencontré ce problème. C'est dangereux. Mais je suppose que vous avez raison, à la fin, vous ne pouvez pas blâmer qui que ce soit, sauf vous-même. – joshuaxls

+0

Il y a une longue histoire de développeurs contourner cette limitation bien sûr. Si vous avez vraiment besoin de stocker un tas d'informations, la plupart des frameworks côté serveur peuvent stocker des données de "session". Autrement dit, un cookie devient simplement une clé dans une entrée de base de données sur le serveur qui contient les informations réelles. asp.NET transforme l'ensemble de la page en une forme géante et stocke les informations dans des champs cachés, et capture tous les clics de liens avec javascript. Tous les nouveaux navigateurs, ont une nouvelle API 'webstorage' accessible depuis javascript: – Breton

+0

Oui, je le sais bien, nous faisons environ 10 millions de pages vues par jour et nous essayons de limiter autant que possible la charge de notre DB. Par conséquent, nous sommes maintenant bloqués avec le test DB-backed: – joshuaxls

Questions connexes