我有一个大字符串想要保存在 cookie 中,但是我不知道每个 cookie 的最大字符串长度和最大 cookie 数量的最佳实践是什么。

我应该使用什么逻辑来拆分字符串,然后组合一组 cookie?

(Microsoft ADFS 或许还有 Siteminder 都采用这种技术,所以我对他们的实现感兴趣)

有帮助吗?

解决方案

Cookie 是由浏览器处理的,因此每个浏览器都有不同的限制。

分割 cookie 只能起到暂时的作用,因为每个站点的 cookie 数据总量也有限制,而且还会增加每个页面上数据传输的开销

每个浏览器每个 cookie 的限制:
Internet Explorer 处理的最大 cookie 约为 3904 字节
Mozilla Firefox 处理的最大 cookie 约为 3136 字节

当我在 Chrome 上进行一些测试时,chrome 内部崩溃并带有一个大 cookie,并且页面下方没有出现任何消​​息。

现在,Netscape 和 Microsoft 都已采取措施,根据 RFC 2109 限制来限制 cookie 的数量 cookie 总数为 300 参考: http://www.cookiecentral.com/faq/#2.5
这样做的原因有很多,其中之一就是黑客攻击,对一个网站进行成像,然后在 cookie 上上传完整视频:) 并用它填满您的硬盘...

我说最好的做法是在浏览器上保留一个小的cookie引用,并将其与服务器上的真实数据连接起来。从各方面来说都是越小越好。

如何对cookie进行测试,你可以编写这样的代码。

if(Request.Cookies["cookieTest"] == null)
    Request.Cookies["cookieTest"].Value = "more text into cookie";
else
    Request.Cookies["cookieTest"].Value += "more text into cookie";

// check now the size
Responce.Write(Request.Cookies["cookieTest"].Value.Length);

我的经验表明,当您尝试在 cookie 上使用不受控制的大数据时,会出现许多随机的不可预测的问题。我多次听到支持者说:清除您的 cookie,然后重试:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top