繁体   English   中英

Cookie无法使用javascript删除

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM