在浏览器关闭时清除 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的主要内容,如果未能解决你的问题,请参考以下文章
sessionStorage,localStorage,cookie
如何在节点 js 中清除浏览器 cookie 时清除 req.session?