【问题标题】:Cookie deletes in Chrome, but not Firefox?Cookie 在 Chrome 中删除,但不是 Firefox?
【发布时间】:2016-11-27 04:53:54
【问题描述】:

我正在用 HTML、PHP 和 JS 编写购物车。我有一个onclick 函数,它可以删除 cookie 并刷新页面,从而将商品从购物车中删除。这在 Chrome 中有效,并且 cookie 被删除。我在 Firefox 中有相同的代码,但它不起作用:cookie 没有在 Firefox 中删除。这是具有onclick 属性的元素:

echo '<button class="button" onclick="removeCart' . $x . '()">Remove from Cart</button>';

函数如下:

                echo '<script>';
                echo 'function removeCart' . $x . '() {';
                echo 'document.cookie = "' . $itemsSpaced[$x] . '= ; expires=Thu, 01 Jan 1970 00:00:00 UTC";';
                echo ' location.reload(true);';
                echo '}';
                echo '</script>';

为什么这在 Chrome 中有效,但在 Firefox 中无效?

【问题讨论】:

  • 你是如何设置cookie的?
  • 我将cookie设置在不同的页面并用JavaScript编写:document.cookie = i + " " + item + "=" + price + "; path=/cart"
  • 您是否尝试在removeCart 中添加; path=/cart
  • 成功了!但我不明白为什么。
  • 因为设置了路径的 cookie 与没有设置路径的 cookie 不同。因此,您试图删除与您设置的 cookie 不同的 cookie。它在 Chrome 中工作基本上是 Chrome 中的一个错误 - 它不应该工作。

标签: javascript php html cookies


【解决方案1】:

您应确保在删除 cookie 时添加相同的 pathdomain 属性(如果您指定了其中任何一个)。这是因为这两个属性决定了 cookie 的可访问性。

例如,您可以有两个同名的 cookie,但链接到不同的路径。如果您不指定路径,则删除哪个将是模棱两可的。显然 Firefox 比 Chrome 处理得更好。如果没有指定路径,则不应删除 cookie。

所以您可能应该将代码更改为:

echo 'document.cookie = "' . $itemsSpaced[$x] . '= ; path=/cart; expires=Thu, 01 Jan 1970 00:00:00 UTC";';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2013-05-28
    • 1970-01-01
    • 2012-12-01
    • 2012-05-23
    • 2018-12-25
    相关资源
    最近更新 更多