我已经使用javascipt搜索了删除cookie的各种文章和链接,但似乎javascript无效。我使用以下代码使用javascript设置cookie值 -
var now = new Date();
var time = now.getTime();
time += 3600 * 1000;
now.setTime(time);
document.cookie="name=" + $scope.user.name;
document.cookie="email=" + $scope.user.email;
document.cookie ="expires=" + now.toGMTString();
然后在尝试删除Cookie时使用以下代码,如链接w3 schools -
document.cookie = "name= ;email= ;expires=Thu, 01 Jan 1970 00:00:00 GMT";
但似乎没有任何效果。 cookie仍然存在。我也试过这样设置cookie -
document.cookie="name=" + $scope.user.name+";email=" + $scope.user.email+";expires=" + now.toGMTString();
然后再次使用相同的删除操作,但cookie没有被删除。问题是什么。我可以看到,分配cookie值的两种方式都不同,但cookie会被删除而不会发生。我检查了铬的结果
版本50.0.2661.102 Ubuntu 16.04(64位)
和歌剧
版本:37.0.2178.32
在这两种情况下,cookie都不会被删除。还有一个信息是我将这两个代码包含在两个不同的API调用中。
答案 0 :(得分:2)
似乎有些问题我无法弄清楚。但是,如果添加' path = /' ,然后cookie似乎被创建并被删除没有任何问题。创建和删除的代码如下所示。
document.cookie="name="+$scope.user.name+";expires="+now.toGMTString()+";path=/";
document.cookie = "name=; expires=Thu, 18 Dec 2013 12:00:00 GMT; path=/";
感谢您的帮助。
答案 1 :(得分:1)
每次执行document.cookie
作业时,您都需要创建一个新的单独Cookie。例如,您的document.cookie="name=" + $scope.user.name;
仅设置name
,但实际上并未设置expires
,因为您没有提供参数,而您的document.cookie ="expires=" + now.toGMTString();
实际上是在创建Cookie名称为expires
,未设置到期时间。
然而,当您执行document.cookie = "name= ;email= ;expires=Thu, 01 Jan 1970 00:00:00 GMT";
时,这会导致name
Cookie过期,但会将email
Cookie留在那里,因为email=
参数不是有效参数设置一个cookie。
检查https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie是否正确使用。但总结一下,设置cookie的有效参数如下:
;path=path
(例如' /',' / mydir')如果未指定,则默认为当前文档位置的当前路径。
;domain=domain
(例如,' example.com'或' subdomain.example.com')。如果未指定,则默认为当前文档位置的主机部分(但不包括子域)。
;max-age=max-age-in-seconds
(例如,60 * 60 * 24 * 365或31536e3一年)
;expires=date-in-GMTString-format
如果未指定,它将在会话结束时到期。
;secure
(cookie仅通过安全协议传输为https)