【问题标题】:How to Delete Session Cookie?如何删除会话 Cookie?
【发布时间】:2010-11-08 07:36:03
【问题描述】:

如何通过 javascript 动态删除会话 cookie,而无需手动重新启动浏览器?

我在某处读到会话 cookie 保留在浏览器内存中,并且会在浏览器关闭时被删除。

// sessionFooCookie is session cookie
// this code does not delete the cookie while the browser is still on
jQuery.cookie('sessionFooCookie', null);

谢谢。

更多信息:上面的代码 sn-p 是 javascript代码sn-p,使用jQuery 以及它的 jQuery.cookie 插件。

【问题讨论】:

    标签: javascript jquery cookies


    【解决方案1】:

    如果是 会话 cookie + hostOnly cookie(如默认 Tapestry 会话的 cookie) 要从 Javascript 中删除,您还必须在编辑/过期 cookie 时不指定域,并且不指定过期日期并将值设置为 null。 p>

    function clearHOnlySessionCookie(name,  path){
        var domain = domain || document.domain;
        var path = path || "/";
        document.cookie = name + "=null; path=" + path+";";
    };
    

    【讨论】:

      【解决方案2】:

      会话 cookie 只是没有过期日期的普通 cookie。这些由浏览器处理直到窗口关闭或程序退出才有效。

      但如果 cookie 是 httpOnly cookie(带有 httpOnly parameter 集的 cookie),您无法从 HTTP 外部读取、更改或删除它(意味着必须在服务器上更改)。

      【讨论】:

      • 我必须说,我在一个小时左右的时间里被监视器与问题“为什么我无法从 javascript 中删除会话 cookie?”,直到我没有找到简短的答案:它是httpOnly...谢谢,非常有用。
      • 仅供参考:@Gumbo 的最后一句中的 HTTP,实际上是指服务器端
      【解决方案3】:

      您可以通过将到期日期设置为昨天来做到这一点。

      我关于 JavaScript 中的 cookie 的新帖子可以帮助您。

      http://www.markusnordhaus.de/2012/01/20/using-cookies-in-javascript-part-1/

      【讨论】:

      • 我担心那个网址不见了
      【解决方案4】:

      确保提供与设置时完全相同的路径,即

      设置:

      $.cookie('foo','bar', {path: '/'});
      

      删除:

      $.cookie('foo', null, {path: '/'});
      

      注意

      $.cookie('foo', null); 
      

      不会起作用,因为它实际上不是同一个 cookie。

      希望对您有所帮助。 哈希中的其他选项也是如此

      【讨论】:

      • 感谢您澄清这一点。希望我能投票几次。
      【解决方案5】:

      这需要在发出 cookie 的服务器端完成。

      【讨论】:

      • 你为什么这么认为?
      • 你是怎么做到的?如果可以的话,特别是在 Node 中!谢谢。
      【解决方案6】:

      删除jQuery cookie

      $(function() {
          var COOKIE_NAME = 'test_cookie';
          var options = { path: '/', expires: 10 };
          $.cookie(COOKIE_NAME, 'test', options); // sets the cookie
          console.log( $.cookie( COOKIE_NAME)); // check the value // returns test
          $.cookie(COOKIE_NAME, null, options);   // deletes the cookie
          console.log( $.cookie( COOKIE_NAME)); // check the value // returns null
      });
      

      【讨论】:

        【解决方案7】:

        IE 和 Opera 在将过期日期设置为过去时不删除会话 cookie 存在已知问题(这是 jQuery cookie 插件所做的)

        这在 Safari 和 Mozilla/FireFox 中运行良好。

        【讨论】:

          猜你喜欢
          • 2022-01-03
          • 2012-09-01
          • 2013-09-12
          • 2014-04-16
          • 1970-01-01
          • 2012-08-12
          • 2016-06-17
          • 1970-01-01
          • 2012-09-10
          相关资源
          最近更新 更多