【问题标题】:cookie not getting deleted using javascriptcookie没有被使用javascript删除
【发布时间】:2016-09-25 18:44:09
【问题描述】:

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

【问题讨论】:

    标签: javascript cookies session-cookies


    【解决方案1】:

    似乎有一些我无法解决的问题。但是,如果添加 '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=/";
    

    感谢您的帮助。

    【讨论】:

      【解决方案2】:

      每次您执行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 (e.g., '/', '/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 等安全协议传输)

      【讨论】:

      • 你是对的。我正在使用您提到的方式,但这里的问题是使用document.cookie = "name=;expires=Thu, 01 Jan 1970 00:00:00 GMT";后cookie没有被删除我正在使用document.cookie="name="+$scope.user.name+";expires="+now.toGMTString();设置cookie。
      猜你喜欢
      • 2016-02-14
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-19
      • 2015-12-10
      • 1970-01-01
      • 2014-05-17
      相关资源
      最近更新 更多