根据域和名称的范围删除重复的JavaScript cookie

时间:2016-04-12 18:25:02

标签: javascript cookies

我最近在我们的网站上更改了一些JavaScript cookie的范围。它们都被限定在创建它们的子域中。它们现在全局范围到域。问题是我现在有重复的cookie具有不同的范围。是否可以以编程方式消除基于名称和范围(域)的JavaScript cookie?示例:

cookieA - >域= .mysite.com

cookieA - >域= sub.mysite.com

cookieB - >域= .mysite.com

cookieB - >域= sub.mysite.com

我只想删除名称为domain = sub.mysite.com的Cookie。

2 个答案:

答案 0 :(得分:2)

您可以使用JavaScript Cookie library执行此操作。

如果你想删除名为cookieA的cookie,设置为域sub.mysite.com,只需运行:

Cookies.remove("cookieA", {domain: "sub.mysite.com"})

这将删除sub.mysite.com的{​​{1}},并保持cookieA的{​​{1}}不受影响。

如果您不想使用此库,可以直接执行:

.mysite.com

答案 1 :(得分:0)

将Cookie更改为全球域时,我们遇到了同样的问题。由于现在存在重复的cookie(例如:git diff --name-only $(git merge-base remotes/origin/master remotes/origin/feature) remotes/origin/feature www.domain.com),很多功能受到了影响。由于我们将网站部署到不同的域(dev,acc,prod),因此这些问题分散在不同的域中。

没有遍历所有页面来查找跨域问题,我们提出了一种无需知道所有cookie名称的解决方案:

.domain.com

此解决方案使用/* * @param c: window.Cookies * @doc https://github.com/js-cookie/js-cookie */ (function(c) { var arrCookies = document.cookie.split(/; */); var arrCookie; for (var cookie in arrCookies) { if (arrCookies.hasOwnProperty(cookie)) { arrCookie = arrCookies[cookie].split('='); c.remove(arrCookie[0], { domain: window.location.hostname }); console.log('removing cookie ' + arrCookie[0] + ' on: ' + window.location.hostname); } } }(window.Cookies)); 清除活动域,并为先前设置的子域重新启用功能。