localhost环境下JWT Cookie仅请求后显示的异常问题
我在本地运行带有自签名证书的Node.js HTTPS服务器,登录时后端通过以下代码设置JWT Cookie:
var token = jwt.sign( { id: user.id, }, process.env.API_SECRET, { expiresIn: "10 days", } ); // 返回登录成功信息及JWT Cookie res.cookie("jwt", token, { httpOnly: true, secure: true, sameSite: "None", maxAge: 24 * 60 * 60 * 1000, domain: "localhost", }); res.status(200).send({ message: "Login successfull", });
异常现象
- 登录页面地址为
http://127.0.0.1:5500/src/html/login.html,登录后Chrome开发者工具的「应用」面板能看到该Cookie,但刷新页面后Cookie消失。 - 从另一页面
http://127.0.0.1:5500/src/html/work-list.html发起任意请求(即使是未添加credentials:include的GET请求),Cookie又会重新显示在开发者工具中。 - 尝试修改
domain参数、添加path:"/"参数,问题依旧存在。
特殊情况
即使开发者工具面板中看不到Cookie,我仍可通过携带credentials:include的POST请求正常完成JWT验证:
fetch("https://localhost:8000/wiki", { credentials: "include", method: "POST", body: CreateFormData(), })
后端对应路由代码:
app.post("/wiki", verifyToken, upload.array("files"), CheckFiles); // 创建req.files数组
我不确定这是否属于正常现象,已搜索两天未找到解决方案。
内容的提问来源于stack exchange,提问作者Elias Jovancic Persson
相关产品推荐
相关产品推荐

