为什么删除 cookie 在 localhost 中有效,而不是我们的 https 站点?

Why does removing a cookie work in localhost and not our https sites?

我的团队正在将 PHP 代码转换为 React,目前我们将两个“不同”的站点拼接在一起。登录过程点击 PHP,使用 JWT 设置一个 cookie,然后重定向到 React 页面之一。当通过 React 页面注销时,我们可以在本地主机中删除 cookie,但是当部署在我们的任何 https 站点上时,相同的代码将不起作用。这些是我尝试过的不同变体:

document.cookie = cname + "=; expires=Thu, 01 Jan 1970 00:00:01 GMT;";
document.cookie = "[COOKIE NAME]= ;domain=[DOMAIN]; expires = Thu, 01 Jan 1970 00:00:00 GMT;";
document.cookie = "[COOKIE NAME]= ;domain=[DOMAIN];path=[PATH]; expires = Thu, 01 Jan 1970 00:00:00 GMT;";
document.cookie = "[COOKIE NAME]= ;expires = Thu, 01 Jan 1970 00:00:00 GMT;";
document.cookie = "[COOKIE NAME]= ;maxAge=-99999999;";
document.cookie = document.cookie.split(';').filter(c => !/^\s?[COOKIE NAME]=/.test(c)).join(';');

这些是我在整个搜索过程中找到的各种解决方案。我什至查看了 react-cookie 的代码,他们正在使用 expires 技巧。

词典:

因此,经过数周的调查,我终于找到了解决方案。 PHP 正在创建具有模式 dev.mysite.com 域的 cookie。我注意到,当且仅当 cookie 的域具有前导句点 (.) 时,我才能在控制台中更改 cookie。我将 PHP 切换为在创建 cookie 时向域添加前导句点,现在 React 能够操纵它们。

注意:我乐于接受人们告诉我这是一个糟糕的想法,但这个解决方案对我们有用。