我需要删除具有相同名称但路径不同的客户端Cookie。什么是在JavaScript中做到这一点的最佳方式。删除具有相同名称但路径不同的Cookie
9
A
回答
17
只需指定要删除的cookie的相同路径,并指定过期到期。
document.cookie = 'name=value1; path=/';
document.cookie = 'name=value2; path=/path/';
alert(document.cookie); // name=value1; name=value2
document.cookie = 'name=; path=/path/; expires=' + new Date(0).toUTCString();
alert(document.cookie); // name=value1
改变它过期的cookie的/
路径将仍然只有过期饼干之一 - 定的路径必须匹配的路径设置:
document.cookie = 'name=; path=/; expires=' + new Date(0).toUTCString();
alert(document.cookie); // name=value2
要删除这两个,你“将不得不终止各自有各自的路径:
document.cookie = 'name=; path=/; expires=' + new Date(0).toUTCString();
document.cookie = 'name=; path=/path/; expires=' + new Date(0).toUTCString();
alert(document.cookie); // {blank}
现在,这些例子假设你正在浏览/path/
或它的子目录。
[编辑]
要批量删除,尝试这样的事情:
function expireAllCookies(name, paths) {
var expires = new Date(0).toUTCString();
// expire null-path cookies as well
document.cookie = name + '=; expires=' + expires;
for (var i = 0, l = paths.length; i < l; i++) {
document.cookie = name + '=; path=' + paths[i] + '; expires=' + expires;
}
}
expireAllCookies('name', ['/', '/path/']);
您可以通过拆分和迭代window.location.pathname
也是假的路径查找:
function expireActiveCookies(name) {
var pathname = location.pathname.replace(/\/$/, ''),
segments = pathname.split('/'),
paths = [];
for (var i = 0, l = segments.length, path; i < l; i++) {
path = segments.slice(0, i + 1).join('/');
paths.push(path); // as file
paths.push(path + '/'); // as directory
}
expireAllCookies(name, paths);
}
0
您可以设置使用相同参数的Cookie,但在过去的某个日期:
document.cookie =
'ppkcookie2=another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'
看到一些有价值的信息
[编辑]删除具有相同名称的Cookie,可以尝试:
function delete_cookie (cookie_name)
{
var cookie_date = new Date (); // current date & time
cookie_date.setTime (cookie_date.getTime() - 1);
document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}
相关问题
- 1. 具有相同名称但不同的路径
- 2. 删除具有相同路径和名称的节点
- 3. 2饼干具有相同的名称和域名,但不同的路径
- 4. 删除具有“相同”名称的JLabels
- 5. 流星如何处理具有相同名称但路径不同的文件
- 6. 试图删除两个cookie具有相同名称
- 7. 2文件具有相同名称但不同的路径=> VIM认为它们是相同的
- 8. 具有相同名称/路径的多个Cookie的浏览器行为
- 9. 具有相同名称的CodeIgniter路由
- 10. 删除所有具有相同名称但扩展名的文件
- 11. 相同的域相同的端口,但不同的路径的cookie问题
- 12. 具有相同的结构,但不同的名称
- 13. 转换具有相同的名称,但不同的扩展
- 14. 声明具有相同名称但不同类型的属性
- 15. 具有相同类型但名称不同的多个元素?
- 16. 访问具有相同名称但ID不同的记录
- 17. Python - 具有相同名称但内容不同的文件
- 18. 具有相同名称但不同的HTTP方法
- 19. 阅读具有相同名称但属性不同的元素
- 20. 具有相同名称但ID不同的自动完成
- 21. 具有相同名称但不同文件夹的Windows Phone类
- 22. 库包含具有相同标题名称的路径
- 23. 具有相同名称的程序集忽略提示路径
- 24. 如何从两个不同的路径在PHP中删除相同的cookie
- 25. 删除多个具有相同名称(但不是全部)的xml节点
- 26. XSD元素定义具有相同的名称,但具有不同的属性
- 27. 具有相同名称
- 28. 具有相同名称
- 29. 将当前路径中的目录复制到bash中具有不同名称的相同路径中
- 30. 如何分隔具有相同路径但做不同事情的路线?
所以如果路径可能包含6个不同的值,我应该使用6x document.cookie的正确路径? – JKown
@JKown本质上。虽然,我会建议循环路径,所以你只有1个'document.cookie'语句。看到我的编辑为一个选项。 –
谢谢,这对我很有用。 – JKown