我想要一个大字符串保存在cookie中,但是我不知道每个cookie的最大字符串长度和最大cookie计数的最佳实践。
我应该使用什么逻辑来拆分字符串,然后组合一组cookie?
(Microsoft ADFS和Siteminder可能会使用这种技术,所以我会对它们的实现感兴趣)
答案 0 :(得分:1)
Cookie是由浏览器处理的,因此每个浏览器都有不同的限制。
拆分Cookie只能暂时提供帮助,因为每个网站的Cookie总数也有限制,但您也会在每个网页上添加数据传输费用
每个Cookie的每个浏览器的限制:
Internet Explorer处理大约3904字节的最大cookie
Mozilla Firefox处理大约3136字节的最大cookie
当我在Chrome上进行一些测试时,Chrome会在内部使用大型Cookie崩溃,并且页面下方不会显示任何消息。
现在,Netscape和Microsoft都已采取措施限制基于RFC 2109的Cookie数量限制总Cookie数量为300 ref: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并再试一次:))