我最近在我们的网站上更改了一些JavaScript cookie的范围。它们都被限定在创建它们的子域中。它们现在全局范围到域。问题是我现在有重复的cookie具有不同的范围。是否可以以编程方式消除基于名称和范围(域)的JavaScript cookie?示例:
cookieA - >域= .mysite.com
cookieA - >域= sub.mysite.com
cookieB - >域= .mysite.com
cookieB - >域= sub.mysite.com
我只想删除名称为domain = sub.mysite.com的Cookie。
答案 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));
清除活动域,并为先前设置的子域重新启用功能。