我设置了dojo.cookie(“foo”),并在其他几个页面上调用它。然后我设置用'dojo.cookie(“foo”,null,{expire:-1})'删除cookie,只要某个页面说fooClear.html被加载。我注意到dojo.cookie(“list”)仅为fooClear.html删除;如果我在其他页面上调用dojo.cookie(“foo”),它仍然包含旧数据,除非我关闭浏览器。
我认为这是一个缓存问题。但是如何在dojo中完全删除cookie?它有可能吗?
答案 0 :(得分:1)
删除当前页面(路径)上的所有Cookie;
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
name = cookies[i].split("=")[0];
document.cookie = name + "=; expires=" + +new Date;
}
在您的情况下,我建议您将路径更改为“/”,以便在您的网页上的任何位置显示任何Cookie,无论是样本'/basket/list.html','/ epay / subsmit / basket.html '等等。
您之前的Cookie分配中发生的事情是,您在设置Cookie时遗漏了路径属性 - 这导致document.cookie下的所述cookie继承了设置位置的document.location。例如。当在'/admin/save.html'下并将 dojo.cookie 作为 set 调用时,它将默认为dojo.cookie(“foo”,“value”,{path: '/管理/'})
如果您不知道设置的路径,则无法清除域下的所有所有 Cookie。因此,如果上面的for循环是在'/'下执行的,那么任何'/ admin /'路径'的cookie仍然存在 - 因为它们没有暴露在'/'路径
答案 1 :(得分:0)
按照设计,cookie首先保存在pr-domain中,然后保存在pr-path中。这意味着如果您将cookie分配给mydomain.tld / rootpath / path,那么所有后续路径都使用相同的cookie。
您需要做的是,创建cookie时,将参数传递给配置,'path',例如:
在 mydomain.tld / foo.html 中,当在js块中设置Cookie时,请使用:
dojo.cookie("mCookie", "contents", {path: '/', domain:'mydomain.tld'})
// domain is the default, can be omitted