在浏览器关闭时清除 cookie

Posted

技术标签:

【中文标题】在浏览器关闭时清除 cookie【英文标题】:Clear cookies on browser close 【发布时间】:2010-12-19 11:47:28 【问题描述】:

当用户关闭浏览器时,如何清除通过我的 asp.net mvc(C#) 应用程序存储的 cookie?

是否有任何选项可以创建一个 cookie,以便它在浏览器关闭后过期?

我需要使用cookies,因为我会保存一些值,直到浏览器关闭。

例如,在登录期间,我可以将用户 ID 存储在 cookie 中,我可以将其用于我的应用程序进程,直到 bwoser 关闭。

会话将在某个特定时间后过期,我需要通过使用 cookie 来克服这一点

【问题讨论】:

【参考方案1】:

你可以使用这个脚本并在body标签中调用它

<body onunload="dc()">
</body>

<script type="text/javascript">
  function dc()
    document.cookie = 'access=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
  
</script>

【讨论】:

【参考方案2】:

当我将我的 cookie 设置为过去过期或根本没有设置它时,由于 SSO 登录导致我的网站进入无限循环。可能是我错误地配置了我的站点以使用 SSO 登录。

但对我有用的只是将 cookie 过期时间增加了 2 秒。

trackCookie.Expires = DateTime.Now.AddSeconds(2);

这使 cookie 在登录时有效。并在不久后过期。所以在关闭浏览器时,cookie 被删除。

【讨论】:

【参考方案3】:

如this SO question:中所述

Response.Cookies("cookie_name").Expires = Session.Timeout;

【讨论】:

您实际上希望在 cookie 上不指定 Expires 值。当浏览器会话结束(用户关闭浏览器)时,这将导致 cookie 被删除。【参考方案4】:

会话通常用于此目的。根据Wikipedia,当没有设置过期日期时,用户关闭浏览器时会清除一个cookie。

cookie 设置者可以指定删除日期,在这种情况下,cookie 将在该日期被删除。如果 cookie 设置器未指定日期,则一旦用户退出浏览器,cookie 就会被删除。

【讨论】:

当用户长时间保持浏览器打开时会话将过期。没有有效期的cookie会一直持续到浏览器关闭吗? 这真的取决于浏览器是如何实现的。 当浏览器关闭时,您不能指望cookie被删除。 为了扩展 @ChrisHanson 的评论,一些浏览器 - 例如谷歌浏览器 - 不再尊重会话 cookie 的“标准” - 即当浏览器关闭时会话 cookie 不再被删除。据我所知,会话 cookie 现在可以无限期地持续下去。 当然,当有多个浏览器窗口时,它们似乎保留了会话 cookie 的句柄......要求在删除之前关闭所有浏览器实例。试图找到这方面的文档很困难。

以上是关于在浏览器关闭时清除 cookie的主要内容,如果未能解决你的问题,请参考以下文章

session与cookie 浏览器关闭时的区别

关闭浏览器清除cookie

sessionStorage,localStorage,cookie

如何在节点 js 中清除浏览器 cookie 时清除 req.session?

Cefsharp 清除 wpf 中的缓存、cookie 和浏览器数据

Edge浏览器怎样设置退出时删除浏览历史记录?