我认为知道答案可以帮助我概念化浏览器存储的cookie与通过DOM提供的document.cookie之间的关系。
答案 0 :(得分:10)
设置document.cookie
由DOM 2 HTML specification指定。将其设置为空字符串应该会导致根据该规范出错。
这是一个设计糟糕的界面。这种关系很糟糕。您不必将其可视化,您只需忍受它。
答案 1 :(得分:8)
document.cookie
的行为并不正常。浏览器处理对大多数对象属性调用的读写调用document.cookie
。
设置document.cookie
不会设置整个Cookie字符串。相反,它添加了cookie。例如:
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"
虽然Cookie的顺序可能会有所不同,但该片段仍然说明了这一点。设置document.cookie
设置指定的cookie,但不会因为新字符串中未提及cookie而删除cookie。犯错很容易。
当然,我不完全确定API是用这种方式构建的。我怀疑如果我们今天编写cookie API并且实际上有读,写,删除等功能,情况可能会有所不同。但是,这就是我们所拥有的。
答案 2 :(得分:2)
如前所述,document.cookie不是普通的字符串。当你阅读它时,你得到所有的cookie。设置它时,您设置一个新的cookie。因此,您不能以这种方式清除所有cookie。
如果您想清除所有Cookie,则同一主题还有其他一些SO问题。这个看起来很清楚:Clearing all cookies with JavaScript。您可以通过Google搜索how do you remove all cookies for a site with javascript找到数以万计的其他建议。