我的脚本设置了10个cookie,浏览器成功保存了它们,但document.cookie
只检索了9对,缺失的对如下:
auth:4ae9Mq1j6tjt7dV6kV6A0piHB6NnNjijBmecax9mA8cfDpSs6pnAcD7H1%2FUqWMIIB%2BbgtKIJ2w1L2GnXkgV2
发生什么事了? document.cookie
中是否有字符限制? cookie域与所有其他域相同。
答案 0 :(得分:7)
问题是服务器端正在发送带有HttpOnly设置的cookie,如下所述:http://en.wikipedia.org/w/index.php?title=HTTP_cookie#HttpOnly_cookie
以这种方式发送的Cookie无法通过document.cookie访问。这通常用于帮助保护cookie值免受您网站上可能的XSS攻击。
您没有提到您在服务器端使用哪种技术来设置Cookie。如果你正在使用PHP,这个链接列出了可以设置HttpOnly标志的可能方式:
https://www.owasp.org/index.php/HttpOnly#Using_PHP_to_set_HttpOnly
答案 1 :(得分:0)
我有两个澄清问题:
Cookie crumb字符串的大小(以字节为单位)取决于您的编码。
您可以详细了解每个域here允许的最大Cookie大小和数量。如果超出不同浏览器here的限制,您可以阅读较早的讨论。这些限制因浏览器而异。
RFC 2109声明浏览器应支持至少4096字节的Cookie大小,至少300个Cookie,以及每个域或唯一主机至少20个Cookie。 This article显示了2009年的Cookie大小测试。This 2008 blog post还提供了有关各个浏览器如何处理Cookie的更多内容。
请注意,IE 7 and later将每个域的Cookie数限制为50,而早期版本的IE每个域限制为20个。
RFC 2109和众多在线参考文献表明,最大大小约为4096字节是一个很好的一般假设。如果你不能保持低于这个限制,你可能不得不以某种方式将数据存储在服务器上。
如果问题不是cookie大小,那么有关您如何存储和检索Cookie值的详细信息将有助于小组解决您的问题。