2

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

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

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

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

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

jQuery.cookie("my_key", selected);

在谷歌浏览器中,一切都如我所料。

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

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

是的,它与my_keyPHP 生成的 cookie 相同:

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

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

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

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


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

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

4

1 回答 1

3

受 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-07-31T14:26:41.387 回答