【问题标题】:Cannot delete cookie by using javascript?无法使用 javascript 删除 cookie?
【发布时间】:2019-07-12 16:18:07
【问题描述】:

我想为我的所有页面使用一个 cookie,并且我还想为所有页面更新此 cookie。它将在布局中用作主题值。

我使用javascript方法创建了一个名为主题的cookie;

$.cookie("theme", "skin-blue");

并通过使用检查cookie是否保存;

document.cookie "theme=skin-blue"

当我想通过使用它来删除 cookie 时返回 false;

$.removeCookie("theme") false

你能帮我解决这个问题吗?无论如何要删除或清除或cookies?谢谢。

注意:此方法适用于一页,但不适用于所有页面。在其他页面中,它会创建同名的新 cookie,因此我无法更新相关的。

【问题讨论】:

  • 你认为$.removeCookie("theme") false 会做什么?
  • 是否可以提供一个 plunker 来重现您的问题?
  • @jfriend00 我认为它应该变为 true 并删除 cookie。

标签: javascript cookies


【解决方案1】:

在 JavaScript 中删除 cookie 的标准方法是将 cookie 的值覆盖为空值,并将过期日期设置为过去的日期。

示例: 假设您要删除的 cookie 名为 access_token。下面的行应该删除 cookie,如果 cookie 的域在同一个域中,那么这应该可以工作。我们假设access_token cookie 位于 example.com 域中。

// Deleting access_token cookie with implicit domain.
document.cookie = "access_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC;"

但是,如果 cookie 的域位于不同的域或子域中,上面的行应该不起作用。让我说得更准确一些。这一次,我们假设access_token cookie 位于.example.com 子域(注意example.com 前面的点)。然后,上面的行不应该工作,因此cookie不会被删除。

解决方案,如果 cookie 位于不同的域/子域中,则 您必须在删除 cookie 时明确指定域/子域名称

// Deleting access_token cookie, with explicit domain/sub-domain
document.cookie = "access_token=; expires=Thu, 01 Jan 1970 00:00:00 UTC; domain=.example.com/"

【讨论】:

    【解决方案2】:

    您可以将 cookie 日期设置为过期,例如:

    function removeCookie (name) {
        document.cookie = name + '=;expires=Mon, 01 Mar 1980 00:00:01 GMT;';
    }
    

    所以只是在做removeCookie("theme");

    将删除您的主题 cookie

    【讨论】:

    • 谢谢,是的,它很有用,但是永久删除呢:)
    • @Cracker 不了解你,但对我来说,设置为 null 时它永远消失了
    • 如果你输入$.cookie("theme", "skin-blue")然后输入document.cookie你会看到它,如果你输入$.cookie("theme", null);然后输入document.cookie它就消失了,不是吗?
    • @Cracker 嗯.. 很奇怪,在我看来,使用 Chrome / Chrome 开发工具它已经不存在了,这就是我一直这样做的方式
    • 真的很奇怪谢谢你的建议。我试着弄清楚。
    猜你喜欢
    • 2020-06-11
    • 2011-08-07
    • 1970-01-01
    • 2013-07-19
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多