javascript document.cookie遗漏了一些对

lor*_*ier 2 javascript cookies

我的脚本设置了10个cookie,浏览器成功保存了它们,但document.cookie只检索了9对,缺失的对如下:

auth:4ae9Mq1j6tjt7dV6kV6A0piHB6NnNjijBmecax9mA8cfDpSs6pnAcD7H1%2FUqWMIIB%2BbgtKIJ2w1L2GnXkgV2
Run Code Online (Sandbox Code Playgroud)

发生了什么?是否有字符限制document.cookie?cookie域与所有其他域相同.

zia*_*aab 7

问题是服务器端正在发送带有HttpOnly设置的cookie,如下所述:http://en.wikipedia.org/w/index.php? title = HTML_cookie#HttpOnly_cookie

以这种方式发送的Cookie无法通过document.cookie访问.这通常用于帮助保护cookie值免受您网站上可能的XSS攻击.

您没有提到您在服务器端使用哪种技术来设置cookie.如果您正在使用PHP,此链接列出了可以设置HttpOnly标志的可能方式:

https://www.owasp.org/index.php/HttpOnly#Using_PHP_to_set_HttpOnly


hot*_*309 0

我有两个需要澄清的问题:

  1. 如果最终的碎屑似乎没有存储在 document.cookie 中,为什么您认为您的“浏览器已成功保存”所有 cookie 碎屑?
  2. 缺失值是您最后尝试添加的值吗?如果是这样,根据您提供的信息,我认为该值太长,无法存储在 cookie 中。

cookie 碎屑字符串的大小(以字节为单位)取决于您的编码。

您可以在此处阅读有关每个域允许的最大 cookie 大小和数量的更多信息。您可以在此处阅读有关如果超出不同浏览器中的限制会发生什么情况的较早讨论。这些限制因浏览器而异。

RFC 2109规定浏览器应支持至少 4096 字节的 cookie 大小、至少 300 个 cookie、每个域或唯一主机至少 20 个 cookie。 本文展示了 2009 年的 cookie 大小测试。 这篇 2008 年的博客文章记录了有关各个浏览器如何处理 cookie 的更多内容。

请注意,IE 7 及更高版本将每个域的 cookie 数量限制为 50 个,而早期版本的 IE 将每个域的 cookie 数量限制为 20 个。

RFC 2109 和大量在线参考文献表明,最大大小约为 4096 字节是一个值得遵守的良好一般假设。如果您不能保持低于该限制,您可能必须以某种方式将数据存储在服务器上。

如果问题不是 cookie 大小,那么有关您如何存储和检索 cookie 值的详细信息将有助于该小组解决您的问题。