我正在使用nodejs和jwt令牌系统,登录后我成功获取了我的cookie作为响应,但浏览器没有将它们保存在存储cookie中。这就是我发送 cookie 的方式:-
return res
.status(200)
.cookie("accessToken", accessToken, options)
.cookie("refreshToken", refreshToken, options)
.json(
new ApiResponse(
200,
{
user: loggedInUser,
accessToken,
refreshToken,
},
"user logged In successfully",
),
);
这里的选项是:-
const options = {
httpOnly: true,
secure: true,
};
然后你可以看到我收到了cookie作为响应:- 但没有保存在浏览器中
我不知道如何解决这个问题
此行为背后可能有多种原因,但您可以尝试一些方法来调试/解决问题:
我看到您已将
secure
属性设置为 true
,这意味着
浏览器只会通过 HTTPS
连接发送 cookie。如果
您正在使用 HTTP
(不是 HTTPS)进行本地测试,浏览器不会
由于安全限制,请保存 cookie。
解决此问题的一种方法是确保您正在访问您的服务器 如果您已将 secure 属性设置为 true,则通过 HTTPS,否则请尝试 将其修改为
false
。
默认情况下,cookie 是为当前域设置的。如果你的服务器 与您的前端运行在不同的域或子域上, 由于同源,浏览器可能不会保存cookie 政策。
现在要解决此问题,请将
domain
属性显式设置为
托管您的前端的正确域或子域。
默认情况下,为当前
URL
的路径设置cookie。如果
您的前端托管在与后端不同的 path
上,即
浏览器可能无法正确保存 cookie。要验证这一点,请设置
path
明确属性到前端所在的正确路径
已主持。
最后,检查您的开发环境,确保您没有
testing
处于incognito
模式,因为某些浏览器可能不会在私有模式下保存cookie。
浏览器
extensions
(如 ad blockers
或 privacy tools
)可能会干扰 cookie 保存。尝试禁用任何可能干扰 cookie 行为的浏览器扩展。
const options = {
httpOnly: true,
secure: true, // saves cookies on https connections
domain: 'yourdomain.com', // define domain explicitly
path: '/yourpath', // define path explicitly
};