I want to remove the warning and be able to logout
https://link-bee-roan.vercel.app/
这是链接
我在这里设置cookie
res.cookie('token', token, {
secure: true,
sameSite: 'none',
});
我的心
app.use(cors({
origin: "https://link-bee-roan.vercel.app",
credentials: true
}));
在前端
axios.defaults.withCredentials = true;
.
.
.
let response = await axios.post("https://linkbee-2.onrender.com/login", {
// let response = await axios.post("http://localhost:3000/login", {
userID, password
},{
withCredentials: true,
});
我在控制台中看到
third party cookie error
,
但是我可以看到 cookie,但是当我单击注销按钮时,cookie 并未被删除,
这是注销后端代码,
router.post('/logout', (req, res) => {
console.log("this is the cookie :: " , req.cookies.token);
res.clearCookie('token').send(req.cookies.token);
});
这是前端的相关功能
const handleLogout = async (e) => {
try {
let response = await axios.post(`${backendLink}/user/logout`);
console.log("this is the respose :: " , response);
// window.location.href = "/";
}
catch (error) {
console.log("error :: ", error);
}
}
获取 cookie,但即使在上面的注销代码之后,cookie 也没有被删除;
来自文档:
Web 浏览器和其他兼容的客户端仅在给定选项与 res.cookie() 相同的情况下才会清除 cookie,不包括过期时间和 maxAge。
有
res.cookie('token', token, {
secure: true,
sameSite: 'none',
});
要设置cookie,您应该有
res.clearCookie('token', {
secure: true,
sameSite: 'none',
}).send();
镜像选项。
也就是说,cookie 存储在客户端上,在您的特定情况下(
router.post('/logout'
处理程序中没有服务器端逻辑,cookie 不是“仅 http”,没有其他 cookie),您可以直接删除它(并有效注销)浏览器,保存 HTTP 请求:
document.cookie = 'token; Max-Age=0 path=/; domain=...etc'