我在用户登录后设置cookie时遇到问题。(此问题仅在生产中出现)。My /login端点返回一个带有token和其他所需信息的cookie(如下所示)
if (isPasswordValid === true) {
jwt.sign({ username, id: userDoc._id }, secret, (error, token) => {
if (error) throw error;
res.cookie("token", token, {
httpOnly: true,
domain: "https://my-frontend-url.com",
sameSite: "none",
secure: true,
}).status(200).json({
message: "User have been logged in successfully",
id: userDoc._id,
username,
authorname: userDoc.authorname,
});
});
然后我从客户端获取端点:
const res = await fetch(`${process.env.REACT_APP_API_URL}/login`, {
method: "post",
credentials: "include",
headers: {
"content-type": "application/json",
},
body: JSON.stringify({
username,
password,
}),
});
在我得到一个200的状态后,Set-Cookie响应头包含令牌,但它也有一个警告:“此通过Set-Cookie标头设置Cookie的尝试被阻止,因为其Domain属性对于当前主机URL无效。”
我还使用了cookie-parcer中间件:app.use(cookieParser());
和cors middleare app.use(cors({ credentials: true, origin: ["https://my-frontend-url.com", "http://localhost:3000"], }));
但仍然无法找出解决方案。
我尝试将credentials: "include",
设置为fetch请求。我不得不使用cors:app.use(cors({ credentials: true, origin: ["https://my-frontend-url.com", "http://localhost:3000"], }));
我也尝试配置res.cookie:res.cookie("token", token, { httpOnly: true, domain: "https://my-frontend-url.com", sameSite: "none", secure: true, })
但没有任何帮助。希望得到一些帮助,谢谢!
1条答案
按热度按时间siotufzp1#
将域选项设置为