[英]Javascript cookie not getting deleted on expiry in angularjs application
[英]cookie not getting deleted using javascript
我搜索了各种文章和链接,以使用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学校一样 -
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调用中。
似乎有些问题我无法解决。 但是,如果添加'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=/";
谢谢您的帮助。
每次执行document.cookie
分配时,您都在创建一个新的单独的cookie。 例如,您的document.cookie="name=" + $scope.user.name;
只设置name
,实际上不设置expires
因为您没有提供参数和document.cookie ="expires=" + now.toGMTString();
实际上是使用名称expires
创建cookie,而不设置过期时间。
当您执行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传输)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.