Cookie не устанавливается с помощью Node.js и экспресс - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь установить cookie с помощью Node.js и выразить, но когда я проверяю в инструментах Chrome Dev, нет cookie. Я явно делаю что-то не так, но не уверен, что.

В моем loginController.js У меня есть

exports.postLogin = async (req, res) => {
  const { email, password } = req.body;
  const user = await authenticate(email, password);
  if (!user) return res.status(403).send("Invalid email or password");
  const userData = {
    name: user.name,
    email: user.email,
    type: AUTH_USER_TYPE
  };
  res.cookie("token", userData, { httpOnly: true, signed: true });
  res.json(userData);
};

И в app.js У меня есть:

const cookieParser = require("cookie-parser");
app.use(cookieParser(process.env.COOKIE_SECRET));

1 Ответ

0 голосов
/ 31 октября 2019

Вам необходимо определить httpOnly: false, например:

res.cookie("token", userData, { maxAge: 1000 * 60 * 10, httpOnly: false });

На стороне клиента вам необходимо отправить withCredentials: true в запросе

$http({
    method: 'POST',
    url: 'url, 
    withCredentials: true,
    data : {}
}).then(function(response){
    //response
}, function (response) {
    //response
});

Примечание: httpOnly : false будетне быть доступным через document.cookie в браузере. Он будет по-прежнему отправляться с HTTP-запросами, и если вы проверите инструменты разработчика в своих браузерах, вы, скорее всего, найдете файл cookie в Chrome на вкладке Ресурсы инструментов разработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...