2

我在通过 JavaScript 开发的框架中设置了一个 cookie(该框架似乎正在使用https://github.com/carhartl/jquery-cookie)。我正在这个框架内开发,但无权访问框架代码,我想通过 JavaScript 删除一个 cookie(我无权访问此框架内的任何服务器端)。

通过 Chrome 检查 cookie,我可以说很多:

"domain": "www.example.com", 
"expirationDate": 1667235180, 
"hostOnly": true, 
"httpOnly": false, 
"name": "my_cookie", 
"path": "/", 
"secure": false, 
"session": false, 
"storeId": "0", 
"value": "123456789"

它是 hostOnly,但这应该没问题,因为我试图从域字段中设置的同一域中删除。

我正在尝试使用以下代码将其删除:

function clearCookie(name, domain, path) {
      var domain = domain || document.domain;
      var path = path || "/";
      document.cookie = name + "=; expires=" + +new Date + "; domain=" + domain + "; path=" + path;
};

clearCookie('my_cookie', 'www.example.com', '/');

但是,当我这样做时,它会创建一个域为“.www.example.com”的新会话 cookie(注意额外的句点),并且不会删除当前的 cookie。

我错过了什么?

4

3 回答 3

4

老问题,但我刚刚遇到这个问题并发现了这个问题。

如果您有 hostOnly cookie,请不要在修改/过期时指定域。

如果没有提供,大多数 cookie 处理库将自动指定域,这使得编辑 hostOnly cookie 变得困难,如果不是不可能的话。

于 2013-07-05T15:50:32.963 回答
1

我认为您设置到期时间的方式存在问题。使用 JavaScript 设置 cookie 需要 UTC/GMT 格式的日期。请参阅此相关答案:

在设置 cookie 时指定到期日期时,我可以使用哪些日期格式?

于 2013-03-18T17:59:45.997 回答
0

您实际上无法通过 javascript 删除 cookie。您所做的是将现有 cookie 设置为过期,然后允许浏览器处理其销毁。如果您检查 jquery-cookie 源,您会发现它实际上具有销毁 cookie 的功能,您可以在此处使用它来简化操作。

这里的简单答案是使用现有框架的删除功能。

$.removeCookie(key)
于 2013-03-18T17:19:01.490 回答