第三方cookie将被阻止-警告,无法注销

问题描述 投票:0回答:1

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 也没有被删除;

enter image description here

node.js mongodb express cookies cors
1个回答
0
投票

来自文档

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' 
© www.soinside.com 2019 - 2024. All rights reserved.