【问题标题】:Unable to remove session cookie in Firefox using JavaScript无法使用 JavaScript 在 Firefox 中删除会话 cookie
【发布时间】:2015-06-29 21:17:05
【问题描述】:

对于我们的前端应用程序,我们使用会话 cookie 进行身份验证。当用户需要进行身份验证时,他被重定向到登录页面,之后他被重定向到应用程序。会话 cookie 已设置。 丑陋的部分是我们对身份验证服务器没有任何控制权,据我所见,客户端的每个请求都会更新 cookie 中的值。

问题是,当用户想要退出时,我们只是在删除会话 cookie。这种方法在除 Firefox 之外的所有浏览器中都非常有效。

由于某种原因,Firefox 无法删除或更新 cookie。当我们尝试这样做时,Firefox 会立即创建一个具有有效值的新对象。

目前我们尝试了几件事:

  1. 正在尝试删除 cookie。
  2. 更新 cookie(过期、名称等)。

我们尝试了以下代码:

$.removeCookie('cookie_key');

$.cookie('cookie_key', null); 

document.cookie = '';

任何想法可能是问题所在?

【问题讨论】:

  • 你能告诉我们你是如何做到这一点的吗?我的意思是代码
  • 目前我们使用 $.removeCookie('cookie_key')。我们还尝试了 $.cookie('cookie_key', null) 和普通 document.cookie = '';

标签: javascript session firefox cookies


【解决方案1】:

您是否尝试过this answer 的解决方案? :

function delete_cookie( name, path, domain ) {
  if( get_cookie( name ) ) {
    document.cookie = name + "=" +
      ((path) ? ";path="+path:"")+
      ((domain)?";domain="+domain:"") +
      ";expires=Thu, 01 Jan 1970 00:00:01 GMT";
  }
}

或者:

function delete_cookie( name ) {
  document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}

你也看过developer.mozilla.org关于cookies的页面吗?

语法:

docCookies.removeItem(name[, path[, domain]])

【讨论】:

  • 您好,我们已经尝试了前两个选项。在 Firefox 中没有结果。我将尝试 developer.mozzila.org 的解决方案,但我看到他们使用相同的方法将到期日期设置为 1970。但为了完整起见,我会尝试一下。再次感谢您的回答。
【解决方案2】:

在自己遇到类似问题后,我得出以下结论:与 Chrome 不同,Firefox 需要path=/;。最重要的是,domain=… 只能在 cookie 设置为域的情况下提供。在这两种情况下,Chrome 和 Firefox 的开发人员工具都会显示一个域。如果无法使用域集删除特定 cookie,则尝试在没有域集的情况下将其删除,反之亦然。正确设置第二个参数后,以下代码在 Chrome 和 Firefox 中都适用:

const date = new Date(0).toUTCString();
function clearCookie(name, domain = true) {
    document.cookie = name + '=; path=/; expires=' + date + (domain ? '; domain=your-domain.example' : '');
}

此外,Firefox 在其开发者工具的存储选项卡中的刷新项目按钮在 88.0 版本中无法正常工作。您可以检查是否仅使用 console.log(document.cookie); 删除了 cookie(没有 HttpOnly 标志)。

【讨论】:

    猜你喜欢
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 2013-02-06
    • 1970-01-01
    • 2013-09-12
    • 2020-06-11
    相关资源
    最近更新 更多