3

目前,我的 cookie 设置为 0,当用户关闭浏览器时它就会过期。当用户离开我的网站时,有没有办法将 cookie 设置为过期?

Cookie.write('cookieName', 'true',{duration:0});

我将“离开我的网站”定义为:完全导航到另一个域,如果他们在我的网站周围导航,我想留下 cookie

4

2 回答 2

5

由于您无法预测用户何时会离开该页面,因此您可能需要在onbeforeunload事件中使 cookie 过期。

window.onbeforeunload = deleteMyCookie;

我还没有添加deleteMyCookie函数的实现——但本质上你可以用一个空字符串覆盖 cookie 并将过期日期设置为当前时间。

更新- 您的问题编辑使此答案无效。在您的情况下,您不知道他们何时离开您的域 - 因此您将不得不接受设置基于时间的到期。您可以设置一个相当短的持续时间(例如 5 分钟),并在他们每次在您的网站上加载页面时移动它 - 这样 cookie 在他们离开您的域后最多只能存在 5 分钟。

于 2013-03-12T15:48:22.640 回答
2

这是不可能的。cookie 标准并未设计为支持这种情况。Cookie 是关于 HTTP 请求和响应(无状态协议中的状态),而不是关于用户使用浏览器从一个页面到另一个域的另一个页面然后过期

过期基于时间(或浏览器会话),而不是浏览器选项卡会话,而不是用户导航模式等。

如果您的浏览器支持每个 Internet 域一个进程(可能作为一种安全功能),然后设置为每个进程只允许 cookie,则这可能无需执行任何其他操作即可工作。然而,正如本例所示,这是基于浏览器的 Cookie 实现,与如何在 Javascript 中设置 cookie 无关。

于 2013-05-26T14:29:14.670 回答