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).
Из документации :
Веб-браузеры и другие совместимые клиенты будут удалять файлы 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'