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

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

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

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

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

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

【问题讨论】:

    标签: cookies browser


    【解决方案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 的句柄......要求在删除之前关闭所有浏览器实例。试图找到这方面的文档很困难。
        猜你喜欢
        • 2016-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-03
        • 2012-12-02
        • 1970-01-01
        • 1970-01-01
        • 2015-06-13
        相关资源
        最近更新 更多