【问题标题】:Delete ALL Cookies with jquery and set new使用 jquery 删除所有 Cookie 并设置新的
【发布时间】:2013-10-28 12:40:45
【问题描述】:

我要做的是当用户访问页面 test.html 时,从他之前访问过的页面中删除 cookie,例如 test1.html ,test2.html 等,并设置新的 cookie。

有没有一种更简单的方法可以使用 jquery 一次性删除所有以前设置的 cookie(我有 100 多个页面要一个一个声明)?

除了一个一个删除再设置新的,我不知道还有什么办法:

$.cookie('test1', 'test1', { expires: -1, path: '/' });//deleting cookies from test1.html
$.cookie('test2', 'test2', { expires: -1, path: '/' });//deleting cookies from test2.html

$.cookie('test', 'test', { expires: 30, path: '/' });//setting new cookies 

谢谢

【问题讨论】:

    标签: javascript jquery html cookies


    【解决方案1】:

    遵循jquery-cookie 规范:

    1) 您调用 $.cookie() 应该返回当前页面上的所有 cookie。
    2)只需遍历并删除如下:

    var cookies = $.cookie();
    for(var cookie in cookies) {
       $.removeCookie(cookie);
    }
    

    注意:删除 cookie 时,您必须传递与设置 cookie 完全相同的路径、域和安全选项,除非您依赖默认选项。

    【讨论】:

    • 但我对您的笔记有疑问。我只是复制粘贴,它对我有用,但你说我必须传递用于设置 cookie 的完全相同的路径、域和安全选项。这让我很困惑..因为我要求一个解决方案来一次删除所有 cookie。
    • 出于浏览器安全原因修改/删除 cookie 时,您必须传递正确的凭据。这样做的主要原因是您不要打扰页面上的其他方 cookie。例如,如果您在 yahoo.com 上处理小部件并决定删除所有 cookie,那么您不会影响页面上的其他小部件,除非它们使用相同的凭据。通常,开发人员使用相同的设置设置所有页面 cookie,因此这种方法应该适用于大多数用例。
    • 再次感谢..现在清楚了.. 幸运的是,在我的情况下,这不会影响其他方的 cookie(仍然存在)
    【解决方案2】:
    var cookies = document.cookie.split(";");
    for(var i=0; i < cookies.length; i++) {
        var equals = cookies[i].indexOf("=");
        var name = equals > -1 ? cookies[i].substr(0, equals) : cookies[i];
        document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
    }
    

    取自问题How to delete all cookies with jquery

    【讨论】:

      【解决方案3】:

      请注意,我们不再维护 jquery-cookie 规范,由 JS Cookie 取代

      【讨论】:

        猜你喜欢
        • 2011-01-16
        • 1970-01-01
        • 2016-03-14
        • 2020-12-27
        • 1970-01-01
        • 1970-01-01
        • 2011-01-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多