为什么PHP会在前100个之后忽略所有cookie?

时间:2018-04-17 20:35:53

标签: php cookies session-cookies

我知道我不应该在用户的浏览器中存储这么多的cookie。我正在努力减少这个数字。但我仍然想知道答案。浏览器正在发送120个cookie。当我使用开发工具查看请求时,我可以看到所有这些内容。但是在PHP中,当我检查$ _COOKIE变量时,只有100个。更糟糕的是,其中一个未通过的cookie是PHPSESSID,因此会话根本不起作用。

每个Google结果都告诉我,Cookie限制是由浏览器强制执行的,而不是由服务器强制执行的。就像我说的,浏览器正在发送所有的cookie。这是服务器弄乱了。在Chrome,Firefox和IE中也发生了同样的事情:如果我发送> 100个cookie,$ _COOKIE的大小正好是100个。

这些也不是大饼干 - 每个都是6个字符,所以它总共有600个字节的cookie内容正在通过PHP。

我尝试过更改Cookie的名称和Cookie的数量,无论我做什么,$ _COOKIE中的Cookie数量都是100。

1 个答案:

答案 0 :(得分:0)

如果您想支持所有浏览器,我不会为每个域提供超过50个Cookie。

如果您想支持大多数浏览器,那么每个域名不超过50个Cookie,每个域名不超过4093个字节!

每个域的最大Cookie计数是通过添加Cookie计算的,直到保存的Cookie数量停止增加。

每个Cookie的最大Cookie大小是通过一次增加一个字符的Cookie值来计算的,直到保存的值被截断为止。

每个域的最大Cookie大小是通过添加最大大小的Cookie来猜测的,直到不再添加Cookie为止。因此,实际限制可能大于猜测的限制。猜测限制< =实际限制<猜测限制+最大CookieSize。

通常,允许以下内容:

  • 总共300个饼干。

  • 每个Cookie 4096个字节。

  • 每个域名20个Cookie。

  • 每个域81920字节*。

  • 给出20个最大大小4096 = 81920字节的cookie。

IE(和Opera)引入了一个新限制,即每个域的最大字节数。

来源:http://browsercookielimits.squawky.net/