【问题标题】:What is the maximum size of a web browser's cookie's key?网络浏览器的 cookie 密钥的最大大小是多少?
【发布时间】:2010-10-13 01:26:32
【问题描述】:

网络浏览器的 cookie 密钥的最大大小是多少?

我知道 cookie 的最大大小是 4KB,但是密钥也有限制吗?

【问题讨论】:

  • 还要注意:Web 服务器(nginx、IIS、apache,...)都对 HTTP 标头的行长有限制。它们通常限制为 4KB 或 8KB。因此,即使浏览器支持更大的 cookie 标头,如果没有在这些服务器上进行特殊配置,它们也可能无法工作。

标签: browser cookies


【解决方案1】:

cookie 密钥(用于标识会话)和 cookie 是相同的东西,以不同的方式使用。所以限制是一样的。根据微软的说法,它是 4096 字节。

MSDN

cookie 通常限制为 4096 字节,你不能存储超过 20 每个站点的 cookie。通过使用单个 带有子键的 cookie,你使用更少的 您网站的 20 个 cookie 分配。此外,单个 cookie 占用大约 50 个字符 开销(到期信息,以及 依此类推),加上值的长度 你存储在里面,所有这些 计入 4096 字节的限制。如果 您存储五个子项而不是五个 单独的 cookie,您保存 单独 cookie 的开销和 可以节省大约 200 个字节。

【讨论】:

  • 顺便说一句,仅仅因为您有大约 4KB 的浏览器 cookie 存储空间可供您使用,就应该认真考虑这是否是个好主意。
  • 您能否确认每个域/站点的 cookie 数量是否不能超过 20?还是现在增加了?
【解决方案2】:

实际上,定义 cookie 如何工作的文档 RFC 2965 指定 cookie 的键或值大小没有最大长度,并鼓励实现支持任意大 饼干。每个浏览器的实现最大值必然不同,因此请查阅各个浏览器文档。

请参阅the RFC 中的第 5.3 节“实施限制”。

【讨论】:

  • 像往常一样,“spec”和“real-world”似乎完全不同。因为 cookie 是与每个 http 请求一起发送的,所以有限制实际上是一件好事。
  • 如果实际上有限制,那将是一个非常无用的规范!不过,这是“正确”的答案!
  • 我不明白为什么浏览器选择不遵循这个规范。当像 localStorage 这样的东西已经存在时,我没有理由不能将超过 4KB(不是那么多)转储到 cookie 中。
  • 注意:RFC 2965 已经过时并被 RFC 6265 取代。限制部分基本没有变化(请参阅:tools.ietf.org/html/rfc6265#section-6.1),但 RFC 6265 现在是规范来源。
【解决方案3】:

您读到的 4K 限制是针对整个 cookie 的,包括名称、值、到期日期等。如果您想支持大多数浏览器,我建议将名称保持在 4000 字节以下,并且整体 cookie 大小在 4093 字节以下。

需要注意的一点是:如果名称太大,您将无法删除 cookie(至少在 JavaScript 中)。通过更新 cookie 并将其设置为过期来删除 cookie。如果名称太大,比如 4090 字节,我发现我无法设置到期日期。我只是出于兴趣才研究这个,而不是我打算有这么大的名字。

要了解更多信息,这里是常见浏览器的“Browser Cookie Limits”。


关于这个主题,如果您想支持大多数浏览器,则不要超过 每个域 50 个 cookie,以及 每个域 4093 个字节。即所有 cookie 的大小不得超过 4093 字节。

这意味着您可以拥有 1 个 4093 字节的 cookie,或 2 个 2045 字节的 cookie,等等。


我以前说 4095 字节,因为 IE7,但是现在 Mobile Safari 有 4096 字节,每个 cookie 有 3 字节开销,所以最多 4093 字节。

【讨论】:

  • 4K 限制是指特定域下的所有 cookie - 因此当达到此限制时,您可能无法创建新 cookie。
  • @ulkas:我现在已经添加了。一旦达到限制,我在许多浏览器中观察到,您可以创建新的 cookie,但它会删除一堆现有的。
  • 注意:RFC 2965 已经过时并被 RFC 6265 取代。限制部分基本没有变化(请参阅:tools.ietf.org/html/rfc6265#section-6.1),但 RFC 6265 现在是规范来源。
  • 为支持大多数浏览器,每个域的 cookie 不应超过 50 个,并且总 cookie 大小(跨所有 cookie)应小于或等于 4093 字节。 docs.devexpress.com/AspNet/11912/common-concepts/…
【解决方案4】:

如果应用规范允许,您也可以使用 web 存储(它支持 IE8+)。

它有 5M(大多数浏览器)或 10M (IE) 内存供其使用。

Web Storage (Second Edition)”是 API,“HTML5 Local Storage”是快速入门。

【讨论】:

  • 这里可能应该注意的是,使用网络存储的一个警告是,如果没有解决方法,存储在网络存储中的数据只能存储在 HTTP 或 HTTPS 上/从它们访问,但不能在它们之间共享(即使是同一个网站)。
  • @ilasno Afaik 传统 cookie 也存在同样的限制。
  • 最重要的警告是,除了网络存储,会话存储和本地存储只能从浏览器访问,而不是服务器。在浏览器和服务器上都可以读取的任何这些和 cookie 之间进行选择时,这绝对是要考虑的事情。
【解决方案5】:

不完全是对原始问题的直接回答,但对于快速尝试直观了解其 cookie 信息存储计划而不执行复杂限制器算法的好奇者相关,此字符串为 4096 个 ASCII 字符字节:

"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmn"

【讨论】:

    猜你喜欢
    • 2014-06-13
    • 2011-01-06
    • 2010-10-02
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    相关资源
    最近更新 更多