Javascript 如果document.cookie是一个字符串,为什么';t document.cookie="&引用;删除所有相关站点';什么是饼干?

Javascript 如果document.cookie是一个字符串,为什么';t document.cookie="&引用;删除所有相关站点';什么是饼干?,javascript,Javascript,我想知道这个问题的答案将有助于我概念化浏览器存储的cookie和文档之间的关系。cookie通过DOM提供。文档。cookie实际上表现不正常。浏览器处理对读取和写入document.cookie的调用不同于大多数对对象属性的调用 设置document.cookie不会设置整个cookie字符串。相反,它添加了cookies。例如: alert(document.cookie); // The existing cookie string is "foo=bar; spam=eggs" docu

我想知道这个问题的答案将有助于我概念化浏览器存储的cookie和文档之间的关系。cookie通过DOM提供。

文档。cookie
实际上表现不正常。浏览器处理对读取和写入
document.cookie的调用不同于大多数对对象属性的调用


设置
document.cookie
不会设置整个cookie字符串。相反,它添加了cookies。例如:

alert(document.cookie); // The existing cookie string is "foo=bar; spam=eggs"
document.cookie = "hello=world; lol=cats";
alert(document.cookie); // The cookie string might now say "foo=bar; spam=eggs; hello=world; lol=cats"
尽管cookies的顺序可能有所不同,但该片段仍然说明了这一点。设置
document.cookie
会设置指定的cookie,但不会因为新字符串中没有提到cookie而删除cookie。犯错误太容易了


当然,我不完全确定API为什么是这样构建的。我怀疑如果我们今天编写cookieAPI,并且实际拥有读、写、删除等函数,情况可能会有所不同。但是,这就是我们得到的。

设置
文档。cookie
由指定。根据该规范,将其设置为空字符串将导致错误


这是一个设计糟糕的界面。这段关系糟透了。你不必想象它,你只需要忍受它。

如前所述,document.cookie不是一个普通的字符串。当你读它的时候,你会得到所有的饼干。当你设置它时,你设置了一个新的cookie。因此,您无法通过这种方式清除所有cookie


如果要清除所有Cookie,则在同一主题上还有许多其他SO问题。这一条似乎很清楚。你可以通过谷歌搜索找到无数其他推荐。

+1搜索你的最后一段。这基本上概括了情况。
你不必想象它
那么我们该如何理解它呢?OP(和我)正试图
概念化浏览器存储的cookie和通过DOM提供的document.cookie之间的关系。
我们不能使用我们不理解的接口。