1

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

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

(Microsoft ADFS 和 Siteminder 可能会使用这种技术,所以我会对他们的实现方式感兴趣)

4

1 回答 1

1

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 并重试 :)

于 2011-01-05T20:05:44.623 回答