JavaScript Cookie绝对拒绝删除
JavaScript Cookie absolutely refuses to be deleted
这与我的另一个 question 有关,我提出了一个新问题,因为我已经缩小了问题的范围并且原来的问题变得相当复杂。
简而言之,我有一个拒绝删除的cookie!
我的服务器设置了 cookie "session=abc; domain=example.com; path=/;"
我想在客户端编辑这个 cookie,所以假设我想将 abc 更改为 xyz 然后我 运行 以下代码
document.cookie = "session=xyz; domain=example.com; path=/;"
现在,当我检查 cookie 时,我现在实际上有以下两个 cookie(注意前导点):
"session=abc; domain=example.com; path=/;"
"session=xyz; domain=.example.com; path=/;"
我很快放弃了强制我的新 cookie 删除圆点的尝试,而是选择在设置新 cookie 之前删除现有 cookie。
然而,这:
document.cookie = 'session=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
还有这个:
document.cookie = 'session=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/; domain=example.com;';
两者都什么都不做
当我什至无法让域匹配时,我究竟应该如何删除 cookie?
NB
在写这个问题的时候,事情变得更复杂了!我刚刚注意到上述行为只发生在特定页面上,如果我试图从另一个页面删除服务器的 cookie,它会毫不费力地消失
雪上加霜
这实际上在 IE/Edge
中按预期工作
使用 jQuery cookie 库而不是直接访问 document.cookie https://plugins.jquery.com/cookie/
然后像jQuery.cookie('session','xyz',{ path: '/' });
一样使用它
通过完全删除域解决了这个问题!
document.cookie = 'session=xyz; path=/; domain=;";
希望这对其他人有帮助,因为这绝对是个难以诊断的问题
编辑
命运的残酷转折,这确实解决了 chrome 和 firefox 的问题,但你猜对了 - IE/Edge 现在正在把玩具从婴儿车里扔出去!
我放弃
我知道除非必要,否则您不想使用依赖项,但 JS-Cookie 是一个极其轻量级、经过广泛测试的交叉兼容库;它不应该影响性能并且可能正是您正在寻找的
这是 GitHub repo 的 link。
干杯!
这与我的另一个 question 有关,我提出了一个新问题,因为我已经缩小了问题的范围并且原来的问题变得相当复杂。
简而言之,我有一个拒绝删除的cookie!
我的服务器设置了 cookie "session=abc; domain=example.com; path=/;"
我想在客户端编辑这个 cookie,所以假设我想将 abc 更改为 xyz 然后我 运行 以下代码
document.cookie = "session=xyz; domain=example.com; path=/;"
现在,当我检查 cookie 时,我现在实际上有以下两个 cookie(注意前导点):
"session=abc; domain=example.com; path=/;"
"session=xyz; domain=.example.com; path=/;"
我很快放弃了强制我的新 cookie 删除圆点的尝试,而是选择在设置新 cookie 之前删除现有 cookie。
然而,这:
document.cookie = 'session=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
还有这个:
document.cookie = 'session=; expires=Thu, 01 Jan 1970 00:00:01 GMT; path=/; domain=example.com;';
两者都什么都不做
当我什至无法让域匹配时,我究竟应该如何删除 cookie?
NB
在写这个问题的时候,事情变得更复杂了!我刚刚注意到上述行为只发生在特定页面上,如果我试图从另一个页面删除服务器的 cookie,它会毫不费力地消失
雪上加霜 这实际上在 IE/Edge
中按预期工作使用 jQuery cookie 库而不是直接访问 document.cookie https://plugins.jquery.com/cookie/
然后像jQuery.cookie('session','xyz',{ path: '/' });
通过完全删除域解决了这个问题!
document.cookie = 'session=xyz; path=/; domain=;";
希望这对其他人有帮助,因为这绝对是个难以诊断的问题
编辑
命运的残酷转折,这确实解决了 chrome 和 firefox 的问题,但你猜对了 - IE/Edge 现在正在把玩具从婴儿车里扔出去!
我放弃
我知道除非必要,否则您不想使用依赖项,但 JS-Cookie 是一个极其轻量级、经过广泛测试的交叉兼容库;它不应该影响性能并且可能正是您正在寻找的
这是 GitHub repo 的 link。
干杯!