【问题标题】:When does JavaScript session expire? How to delete cookie on session end?JavaScript 会话何时过期?如何在会话结束时删除 cookie?
【发布时间】:2016-06-02 10:01:36
【问题描述】:

一旦用户关闭他们的标签/浏览器,我想删除名为“用户名”的 cookie。我正在使用以下代码来检测用户是否关闭并且应该删除 cookie。但是cookie仍然存在。为什么?

在浏览器控制台资源中,它将 cookie 过期字段显示为“会话”。会话何时结束?

// delete cookies when user closes browser/tab
$(window).unload(function() {
   $.removeCookie('username', { path: '/' });
});

【问题讨论】:

  • “会话何时结束?” – 通常是在您关闭整个浏览器程序时,而不仅仅是单个选项卡/窗口。 (虽然在大多数浏览器中处于私有模式,但这是不同的。)
  • @CBroe 在用户关闭浏览器选项卡或离开网站后,我如何删除我的 cookie?
  • 如果用户导航到另一个站点然后按下返回按钮怎么办?你真的要让那个人重新登录吗!?

标签: javascript session cookies expired-cookies


【解决方案1】:

创建cookie的js是:

$.cookie('username', 'your value');

要删除相同的 cookie,代码是:

$.removeCookie('username', '', { path: '/'});

您错过了第二个参数,即值,因此在这种情况下,您的 cookie 将在会话结束时过期。

我使用的库是:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

这个库不再维护。使用新插件:

<script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/2.1.0/js.cookie.min.js"></script>

创建 cookie:

Cookies.set('username', 'value');

并删除:

Cookies.remove('username');

默认情况下,如果未指定过期日期,则在用户关闭浏览器时删除 Cookie(会话 cookie)。

因为可以使用 alf+f4 或 X 或终止信号关闭浏览器,所以您只能处理和依赖 cookie 过期时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-22
    • 2013-07-18
    • 2012-05-23
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 2017-03-16
    • 2011-04-13
    相关资源
    最近更新 更多