【问题标题】:Cookie not being deleted after session closed会话关闭后 Cookie 未被删除
【发布时间】:2015-03-31 18:34:37
【问题描述】:

我正在使用应该在用户关闭页面后删除的 cookie,但它们不是。这就是我用 JS 设置 cookie 的方式

document.cookie="status=false";

我可以在控制台中看到 cookie,在我关闭浏览器并再次打开它并转到我的网页后,仍然有 cookie status=false 知道为什么吗?

【问题讨论】:

  • 如果没有一个答案适合您:从您提供的信息中应该删除 cookie。似乎还有其他问题。请创建一个新的空白 HTML 页面,并尝试用最少的(不必要的)代码重现问题。然后,将其添加到您的问题中,以便我们可以使用它并找出问题所在。
  • 不行,还是不行。我只用一个 cookie 创建了“新鲜”页面,当我在开发工具中创建它时,它显示 Duration:Session,在我关闭选项卡并以新页面打开页面后,仍然有那个 cookie。这是代码pastie.org/10065425
  • 太奇怪了,我复制粘贴了你的代码,放到服务器上,用火狐访问,设置cookie成功,关闭浏览器,重新打开,进入页面,寻找cookie : 走了。然后我对 Chrome 做了同样的事情。结果相同。你用的是什么浏览器?
  • 奇怪的大声笑,我正在使用 Chrome

标签: javascript cookies session-cookies


【解决方案1】:

我用这个“技巧”解决了它,我不知道为什么我不能让cookies工作

window.onbeforeunload = function() {
    document.cookie="status=false";
};

【讨论】:

    【解决方案2】:

    document.cookie = ...sets individual cookie values,它不会将“整个 cookie”设置为您传递的字符串,因此设置“status=false”只是绑定或更新“状态”值,而不管 cookie 中的其他内容如何:

    document.cookie = "cow=bell";
    document.cookie = "cat=lol";
    // cookie is now "cow=bell&cat=lol", not just "cat=lol"
    

    如果您想删除整个 cookie,请将其过期时间设置为“过去”,浏览器将为您进行清理。

    (正如评论中所指出的,如果您从未为 cookie 设置过期时间戳,则它将在页面会话结束时过期,例如您关闭选项卡/浏览器)

    【讨论】:

      【解决方案3】:

      我今天实际上正在这样做。一个很好的参考是Mozilla cookie documents,如果你用他们的var docCookies 代码创建一个js,那么使用docCookies.setItem() docCookies.setItem() docCookies.getItem()docCookies.removeItem() 等提供的函数工作得非常好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-07
        • 1970-01-01
        • 2018-02-25
        • 2013-01-09
        • 2015-07-03
        相关资源
        最近更新 更多