我有一个要保存在 cookie 中的大字符串,但是我不知道每个 cookie 的最大字符串长度和最大 cookie 计数的最佳做法是什么。
我应该使用什么逻辑来拆分字符串,然后再组合一组 cookie?
(Microsoft ADFS 和 Siteminder 可能会使用这种技术,所以我会对他们的实现方式感兴趣)
我有一个要保存在 cookie 中的大字符串,但是我不知道每个 cookie 的最大字符串长度和最大 cookie 计数的最佳做法是什么。
我应该使用什么逻辑来拆分字符串,然后再组合一组 cookie?
(Microsoft ADFS 和 Siteminder 可能会使用这种技术,所以我会对他们的实现方式感兴趣)
Cookies 是由浏览器处理的东西,因此每个浏览器都有不同的限制。
拆分 cookie 只能提供暂时的帮助,因为每个站点的 cookie 数据总量也有限制,而且您还会增加每个页面上的数据传输开销
每个 cookie 的每个浏览器的限制:
Internet Explorer 处理大约 3904 字节的
最大 cookie Mozilla Firefox 处理大约 3136 字节的最大 cookie
当我在 Chrome 上进行一些测试时,chrome 在内部崩溃并带有一个大 cookie,并且页面下方没有出现任何消息。
现在,Netscape 和 Microsoft 都采取了措施,根据 RFC 2109 将cookie 总数限制为 300 来限制 cookie 的数量参考: 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 并重试 :)