Сторонние файлы cookie будут заблокированы – предупреждение, невозможно выйти из системы

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.info("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.info("this is the respose :: " , response);
            // window.location.href = "/";
        }
        catch (error) {
            console.info("error :: ", error);
        }
    }

Получение файла cookie, но файл cookie не удаляется даже после приведенного выше кода выхода из системы;

🤔 А знаете ли вы, что...
Node.js активно используется для создания серверных приложений на стороне бэкенда в стеке MEAN (MongoDB, Express.js, Angular, Node.js).


151
1

Ответ:

Решено

Из документации :

Веб-браузеры и другие совместимые клиенты будут удалять файлы cookie только в том случае, если заданные параметры идентичны параметрам, заданным для res.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'