JavaScript - 如何删除值为空的奇怪 cookie?

3

我的网页不小心创建了一个奇怪的cookie,它的值为空(可能是因为我使用了空字符串cvalue=""作为参数调用了cookie_create(cname,cvalue)函数,但很抱歉,我不知道如何重现这个问题)。当然,在将来我会加入一些代码来处理当cvalue==""时的异常情况,但现在我无法从JavaScript控制台中删除这个cookie(我不想清除所有的浏览器历史记录和cookie数据,所以我需要从控制台中删除它)。我执行以下命令:

document.cookie

输出结果为:

"dGVzdF9tYWx5=eyJ1c3Jfc19pbnB1dCI6Ijk0MCIsIm04X3BlcmlvZF9zbGlkZXIiOiIyMCIsInJldm1zX2lucHV0IjoiMCIsInYxX3NlbGVjdCI6IjEiLCJtOF9hbmdsZTFfbWluX3NsaWRlciI6Ii0zIiwibThfYW5nbGUxX21heF9zbGlkZXIiOiIzIiwidjJfc2VsZWN0IjoiMiIsIm04X2FuZ2xlMl9taW5fc2xpZGVyIjoiLTMiLCJtOF9hbmdsZTJfbWF4X3NsaWRlciI6IjMiLCJ2M19zZWxlY3QiOiIyIiwibThfaGVpZ2h0X21pbl9zbGlkZXIiOiIwIiwibThfaGVpZ2h0X21heF9zbGlkZXIiOiIxMCJ9; SG9kbsSbIHZlbGvDoSBvc21pxI1rYSAlPcKw=eyJ1c3Jfc19pbnB1dCI6IjM0MzUiLCJtOF9wZXJpb2Rfc2xpZGVyIjoiNjgiLCJyZXZtc19pbnB1dCI6IjAiLCJ2MV9zZWxlY3QiOiIxIiwibThfYW5nbGUxX21pbl9zbGlkZXIiOiItMTEiLCJtOF9hbmdsZTFfbWF4X3NsaWRlciI6IjExIiwidjJfc2VsZWN0IjoiMiIsIm04X2FuZ2xlMl9taW5fc2xpZGVyIjoiLTExIiwibThfYW5nbGUyX21heF9zbGlkZXIiOiIxMSIsInYzX3NlbGVjdCI6IjIiLCJtOF9oZWlnaHRfbWluX3NsaWRlciI6IjAiLCJtOF9oZWlnaHRfbWF4X3NsaWRlciI6IjM0In0; eyJ1c3Jfc19pbnB1dCI6IjAiLCJtOF9wZXJpb2Rfc2xpZGVyIjoiMzIiLCJyZXZtc19pbnB1dCI6IjAiLCJ2MV9zZWxlY3QiOiIxIiwibThfYW5nbGUxX21pbl9zbGlkZXIiOiItNSIsIm04X2FuZ2xlMV9tYXhfc2xpZGVyIjoiNSIsInYyX3NlbGVjdCI6IjIiLCJtOF9hbmdsZTJfbWluX3NsaWRlciI6Ii01IiwibThfYW5nbGUyX21heF9zbGlkZXIiOiI1IiwidjNfc2VsZWN0IjoiMiIsIm04X2hlaWdodF9taW5fc2xpZGVyIjoiNDAiLCJtOF9oZWlnaHRfbWF4X3NsaWRlciI6IjYwIn0; ZGVmYXVsdA=eyJ1c3Jfc19pbnB1dCI6IjM2IiwibThfcGVyaW9kX3NsaWRlciI6IjMyIiwicmV2bXNfaW5wdXQiOiIwIiwidjFfc2VsZWN0IjoiMSIsIm04X2FuZ2xlMV9taW5fc2xpZGVyIjoiLTUiLCJtOF9hbmdsZTFfbWF4X3NsaWRlciI6IjUiLCJ2Ml9zZWxlY3QiOiIyIiwibThfYW5nbGUyX21pbl9zbGlkZXIiOiItNSIsIm04X2FuZ2xlMl9tYXhfc2xpZGVyIjoiNSIsInYzX3NlbGVjdCI6IjIiLCJtOF9oZWlnaHRfbWluX3NsaWRlciI6IjQwIiwibThfaGVpZ2h0X21heF9zbGlkZXIiOiI2MCJ9; ZGVmYXVsdDI=eyJ1c3Jfc19pbnB1dCI6Ijg4IiwibThfcGVyaW9kX3NsaWRlciI6IjMyIiwicmV2bXNfaW5wdXQiOiIwIiwidjFfc2VsZWN0IjoiMSIsIm04X2FuZ2xlMV9taW5fc2xpZGVyIjoiLTUiLCJtOF9hbmdsZTFfbWF4X3NsaWRlciI6IjUiLCJ2Ml9zZWxlY3QiOiIyIiwibThfYW5nbGUyX21pbl9zbGlkZXIiOiItNSIsIm04X2FuZ2xlMl9tYXhfc2xpZGVyIjoiNSIsInYzX3NlbGVjdCI6IjIiLCJtOF9oZWlnaHRfbWluX3NsaWRlciI6IjQwIiwibThfaGVpZ2h0X21heF9zbGlkZXIiOiI3OCJ9"

(这是base64编码的名称和base64编码的数据 - 5个cookie,其中4个带有长值正确,1个cookie是长名称但没有值,没有“=”部分) 这只是上面代码引用数据中奇怪的一个cookie:

eyJ1c3Jfc19pbnB1dCI6IjAiLCJtOF9wZXJpb2Rfc2xpZGVyIjoiMzIiLCJyZXZtc19pbnB1dCI6IjAiLCJ2MV9zZWxlY3QiOiIxIiwibThfYW5nbGUxX21pbl9zbGlkZXIiOiItNSIsIm04X2FuZ2xlMV9tYXhfc2xpZGVyIjoiNSIsInYyX3NlbGVjdCI6IjIiLCJtOF9hbmdsZTJfbWluX3NsaWRlciI6Ii01IiwibThfYW5nbGUyX21heF9zbGlkZXIiOiI1IiwidjNfc2VsZWN0IjoiMiIsIm04X2hlaWdodF9taW5fc2xpZGVyIjoiNDAiLCJtOF9oZWlnaHRfbWF4X3NsaWRlciI6IjYwIn0;

如果您想删除值为空的奇怪 cookie,请输入以下命令

document.cookie = "eyJ1c3Jfc19pbnB1dCI6IjAiLCJtOF9wZXJpb2Rfc2xpZGVyIjoiMzIiLCJyZXZtc19pbnB1dCI6IjAiLCJ2MV9zZWxlY3QiOiIxIiwibThfYW5nbGUxX21pbl9zbGlkZXIiOiItNSIsIm04X2FuZ2xlMV9tYXhfc2xpZGVyIjoiNSIsInYyX3NlbGVjdCI6IjIiLCJtOF9hbmdsZTJfbWluX3NsaWRlciI6Ii01IiwibThfYW5nbGUyX21heF9zbGlkZXIiOiI1IiwidjNfc2VsZWN0IjoiMiIsIm04X2hlaWdodF9taW5fc2xpZGVyIjoiNDAiLCJtOF9oZWlnaHRfbWF4X3NsaWRlciI6IjYwIn0=;expires=Thu, 23 Jan 1970 00:00:01 GMT;path=/";

但不管怎样,it并没有被删除(与document.cookie之前的输出相同...因此我尝试删除另一个

document.cookie = "dGVzdF9tYWx5=;expires=Thu, 23 Jan 1970 00:00:01 GMT;path=/";

操作成功,已删除目标文件,但异常文件无法删除(尝试多种变量、不同时间、非空值、有/无路径指定)。

"SG9kbsSbIHZlbGvDoSBvc21pxI1rYSAlPcKw=eyJ1c3Jfc19pbnB1dCI6IjM0MzUiLCJtOF9wZXJpb2Rfc2xpZGVyIjoiNjgiLCJyZXZtc19pbnB1dCI6IjAiLCJ2MV9zZWxlY3QiOiIxIiwibThfYW5nbGUxX21pbl9zbGlkZXIiOiItMTEiLCJtOF9hbmdsZTFfbWF4X3NsaWRlciI6IjExIiwidjJfc2VsZWN0IjoiMiIsIm04X2FuZ2xlMl9taW5fc2xpZGVyIjoiLTExIiwibThfYW5nbGUyX21heF9zbGlkZXIiOiIxMSIsInYzX3NlbGVjdCI6IjIiLCJtOF9oZWlnaHRfbWluX3NsaWRlciI6IjAiLCJtOF9oZWlnaHRfbWF4X3NsaWRlciI6IjM0In0; eyJ1c3Jfc19pbnB1dCI6IjAiLCJtOF9wZXJpb2Rfc2xpZGVyIjoiMzIiLCJyZXZtc19pbnB1dCI6IjAiLCJ2MV9zZWxlY3QiOiIxIiwibThfYW5nbGUxX21pbl9zbGlkZXIiOiItNSIsIm04X2FuZ2xlMV9tYXhfc2xpZGVyIjoiNSIsInYyX3NlbGVjdCI6IjIiLCJtOF9hbmdsZTJfbWluX3NsaWRlciI6Ii01IiwibThfYW5nbGUyX21heF9zbGlkZXIiOiI1IiwidjNfc2VsZWN0IjoiMiIsIm04X2hlaWdodF9taW5fc2xpZGVyIjoiNDAiLCJtOF9oZWlnaHRfbWF4X3NsaWRlciI6IjYwIn0; ZGVmYXVsdA=eyJ1c3Jfc19pbnB1dCI6IjM2IiwibThfcGVyaW9kX3NsaWRlciI6IjMyIiwicmV2bXNfaW5wdXQiOiIwIiwidjFfc2VsZWN0IjoiMSIsIm04X2FuZ2xlMV9taW5fc2xpZGVyIjoiLTUiLCJtOF9hbmdsZTFfbWF4X3NsaWRlciI6IjUiLCJ2Ml9zZWxlY3QiOiIyIiwibThfYW5nbGUyX21pbl9zbGlkZXIiOiItNSIsIm04X2FuZ2xlMl9tYXhfc2xpZGVyIjoiNSIsInYzX3NlbGVjdCI6IjIiLCJtOF9oZWlnaHRfbWluX3NsaWRlciI6IjQwIiwibThfaGVpZ2h0X21heF9zbGlkZXIiOiI2MCJ9; ZGVmYXVsdDI=eyJ1c3Jfc19pbnB1dCI6Ijg4IiwibThfcGVyaW9kX3NsaWRlciI6IjMyIiwicmV2bXNfaW5wdXQiOiIwIiwidjFfc2VsZWN0IjoiMSIsIm04X2FuZ2xlMV9taW5fc2xpZGVyIjoiLTUiLCJtOF9hbmdsZTFfbWF4X3NsaWRlciI6IjUiLCJ2Ml9zZWxlY3QiOiIyIiwibThfYW5nbGUyX21pbl9zbGlkZXIiOiItNSIsIm04X2FuZ2xlMl9tYXhfc2xpZGVyIjoiNSIsInYzX3NlbGVjdCI6IjIiLCJtOF9oZWlnaHRfbWluX3NsaWRlciI6IjQwIiwibThfaGVpZ2h0X21heF9zbGlkZXIiOiI3OCJ9"

怎么可能?一个有bug的不可删除的cookie?


即使使用相同名称创建新的cookie(并在2030年到期),旧的奇怪cookie也不会被覆盖,而是在document.cookie中添加了新的字符串,并且两者都存在,唯一的区别是新的末尾有额外的“=”,而奇怪的cookie没有,但是当使用标准方式删除时,只有新的cookie被删除,但奇怪的cookie仍然存在,请帮忙解决。 - rejnok
2个回答

1

是的,这就是我所知道和尝试过的,但对于这个特定的 cookie 名称来说,它根本不起作用。 - rejnok
这可能会对你有所帮助: https://dev59.com/qnRB5IYBdhLWcg3wuZfo - Mohan Ohanra

0

我终于发现问题出在一个空名称的cookie上!!这样就可以删除它了:

document.cookie = "=;expires=Thu, 23 Jan 1970 00:00:01 GMT;path=/";

所以,document.cookie 输出与结尾有/没有 "=" 的区别有助于解决这个问题。这不是 cookie 错误,而是由 cname="" 和 cvalue=[longdata]... 造成的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接