Cookie未被javascript

时间:2016-05-27 12:11:42

标签: javascript cookies session-cookies

我已经使用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调用中。

2 个答案:

答案 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)