Express 饼干“;cookieName”;将很快被拒绝,因为它具有“;sameSite”;属性设置为“;无”;或clearCookie上的无效值

Express 饼干“;cookieName”;将很快被拒绝,因为它具有“;sameSite”;属性设置为“;无”;或clearCookie上的无效值,express,firefox,cookies,Express,Firefox,Cookies,为了设置cookie,我有一个带有以下代码的express API: ... res.setHeader("Access-Control-Allow-Origin", ip); res.cookie(name, token, { maxAge: 30000, httpOnly: true, secure: false, sameSite: "Lax" }); ... 另一种方法是清除cookie: ... res.clearCookie(name); ... 当我执行第二个命令时,我收到以下

为了设置cookie,我有一个带有以下代码的express API:

...
res.setHeader("Access-Control-Allow-Origin", ip);
res.cookie(name, token, { maxAge: 30000, httpOnly: true, secure: false, sameSite: "Lax" });
...
另一种方法是清除cookie:

...
res.clearCookie(name);
...
当我执行第二个命令时,我收到以下错误消息: Cookie“cookieName”将很快被拒绝,因为它的“sameSite”属性设置为“none”,或者clearCookie上的值无效

一些细节:

  • 这个错误只会在Firefox中出现,而不会在Chrome中出现
  • 在设置sameSite:“Lax”之前,我在设置cookie之后以及清除cookie时收到了两次错误消息。将sameSite设置为Lax后,问题仅在清除cookie时出现

有什么帮助吗?如果您需要更多详细信息、版本、代码,请告诉我。

您面临HTTP问题。一般规则是,要设置或删除cookie,必须将所有参数设置为相同的(值和过期时间除外)。答案和中描述了问题的正确解决方案

最后,要删除cookie,服务器返回一个设置cookie头,其过期日期为过去。只有当Set cookie头中的Path和Domain属性与创建cookie时使用的值匹配时,服务器才能成功删除cookie

它也写在
clearCookie
的文档中:

Web浏览器和其他兼容客户端只有在给定的选项与res.cookie()的选项相同时才会清除cookie,但expires和maxAge除外


因此,在您的情况下,使用过去使用的
expires
调用
cookie
命令,或者使用创建cookie时使用的相同参数调用
clearCookie

cookie和clearCookie都需要相同的参数

    res.clearCookie(name, { maxAge: 30000, httpOnly: true, secure: false, sameSite: "Lax" })

代码是什么样子的?