【问题标题】:Can't remove cookies, which are generated by PHP无法删除由 PHP 生成的 cookie
【发布时间】:2013-07-31 13:45:22
【问题描述】:

这是我在 PHP 和 Javascript 中创建 cookie 的方法

PHP,在加载页面之前,我首先通过 PHP 创建 cookie。

setcookie('my_key', $value, 0,ADMIN_COOKIE_PATH);

Javascript。我实际上是在使用 jquery 和这个 cookie 插件。

当下拉列表更改时,我更改 cookie 值。

jQuery.cookie("my_key", selected);

在 Google Chrome 中,一切正常。

my_key cookie 的值将在下拉列表更改时更改。

在 Firefox 中,它会生成另一个相同的 cookie。

是的,它与 PHP 生成的my_key cookie 相同:

相同的名称、相同的过期时间(浏览器会话)、相同的域、相同的路径、相同的 httponly(空白)、相同的安全性(空白)

唯一的区别是新 cookie 设置为新值。

我尝试jQuery.removeCookie('my_key'),但它只能删除新的cookie。

我不确定这是 Firefox 的错误,还是我做错了什么。但是,确实,这是一个令人讨厌的问题。


更新 1: 确实,我没有在 javascript 中指定路径,现在我可以在设置路径时更改 PHP 生成的 cookie。但是还是无法通过JS删除cookie。

仅供参考,我可以在 PHP 中删除 cookie,但无法在 JS 中删除它们。

【问题讨论】:

  • 你使用的是默认路径吗?
  • 您是否检查过哪些 cookie 会返回给 PHP?
  • @Spokey 是的,谢谢提醒。我设置了路径jQuery.cookie("my_key", selected,{'path':'/admin'});,我可以更改 cookie 而不是创建一个新的。但仍然无法删除 cookie。
  • 试图将该cookie设置为“”?
  • @BenjaminGruenbaum 好的。我发布并在 2 天后接受它作为答案(这是规则)。

标签: php javascript jquery firefox cookies


【解决方案1】:

受 Spokey 和 MightyPork 启发的答案:

  • 1、设置路径为jQuery.cookie

  • 2,用jQuery.cookie("my_key", '',{expires: -1,path:'/admin'});代替jQuery.removeCookie

更新:

我昨晚确实使用了 jQuery.removeCookie('my_key',{path:'/admin'}) 但没有工作。我今天早上再试一次,它正在工作。也许我昨​​晚太累了。

结论

整件事都是关于路径的。我认为,从我的测试来看,firefox 对 cookie 操作的标准可能比 google chrome 更严格。

【讨论】:

    猜你喜欢
    • 2013-02-21
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 2012-01-20
    相关资源
    最近更新 更多