15

据谷歌搜索告诉我,允许的最大 cookie 数量很大程度上取决于浏览器,但是我找不到任何关于现代浏览器允许多少 cookie 的最新数据。

我需要在 cookie 中存储大量用户偏好(对于尚未注册的用户),那么最好的方法是什么?(此外,这些 cookie 将通过 javascript 客户端和 php 服务器端访问)

4

6 回答 6

24

来自rfc

  • 至少 300 个 cookie

  • 每个 cookie 至少 4096 字节(通过在 Set-Cookie 标头的语法描述中组成 cookie 非终结符的字符的大小来衡量)

  • 每个唯一主机或域名至少 20 个 cookie

这些是最低要求。IE6 团队没有做到这一点。其他一切都是高度特定于浏览器的。您最好编写一个测试平台来测试每个浏览器。用很少的增量步骤测试最大大小和数量(并检查它们是否仍然可读)。

另外,我似乎记得 apache 有大量 cookie 的问题。不记得我在哪里看到的。

这是一个小 cookie 测试脚本: http: //krijnhoetmer.nl/stuff/javascript/maximum-cookies/

于 2008-11-12T13:52:42.427 回答
15

最好的方法是根本不将它们存储在 cookie 中。

将它们存储在数据库中,并将 DB 密钥存储在 cookie 中。如果只是一些偏好,那么安全性就不是什么大问题。

不要忘记每个请求都会发送 cookie - 如果您有 2kb 的 cookie 数据并在一个页面上加载 10 个图像,那就是额外的 22kb 数据。

于 2008-11-12T12:25:41.090 回答
6

饼干数量:

  • Chrome 9 允许每个域 180 个 cookie
  • Firefox 3.6.3 允许每个域 50 个 cookie
  • Internet Explorer 8 允许每个域 50 个 cookie
  • Opera 10 和 9 允许每个域 30 个 cookie

Cookie 大小限制(4096 字节):

  • Firefox 和 Safari 允许 cookie 最多包含 4097 个字符,即 4096 用于名称和值,一个用于等号。
  • Opera 允许包含最多 4096 个字符的 cookie,用于名称、值和等号。
  • Internet Explorer 允许包含最多 4095 个字符的 cookie,用于名称、值和等号。

SRC:http ://webdesign.about.com/od/cookies/f/cookies-per-domain-limit.htm和http://www.nczonline.net/blog/2008/05/17/browser-cookie-限制/

于 2012-10-02T14:25:32.380 回答
4

我今天研究了一下,如果你想支持大多数浏览器,那么每个域不要超过 50 个 cookie,每个域不要超过 4095 字节(即所有 cookie 的总大小 <= 4095 字节)

要了解更多信息,这里是测试页和结果

于 2011-01-05T12:48:13.790 回答
2

IIRC,对于大多数普通浏览器来说是 20,对于某些浏览器来说更多,对于一个特定的浏览器是 10(同样是 IIRC,IE5.5?)。最多 10 个被认为是一个安全的数字。

无论如何,您实际上并不需要超过一个 - 只需使用一个来存储客户端的 ID,并根据相同的 ID 存储您需要在服务器端存储的所有内容。除此之外,您离开客户端的数据越少,他们删除/损坏/黑客/等的数据就越少。

于 2008-11-12T13:21:18.713 回答
0

不知道从他们的角度来看这有多大意义,但我见过一些网站设置了 450 多个 cookie 并向140 多个不同的第三方域报告

于 2014-05-08T22:21:57.753 回答