Как использовать файлы cookie разных источников для рендеринга на стороне сервера? - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть серверное веб-приложение, работающее на localhost:3000, а API на localhost:3010.Как установить один и тот же файл cookie в обоих доменах после запроса к API?

Когда я вхожу в систему, я отправляю запрос POST на localhost:3010, и он устанавливает файл cookie следующим образом:

const token = jwt.sign({ id, email }, secret, { expiresIn });
res.cookie('authorization', token, { signed: true, httpOnly: true, maxAge: 10000000 });

Моя проблема в том, что я не могу понять, как установить этот файл cookie в приложении на localhost:3000.Раньше я просто использовал localStorage, но он не работает для рендеринга на стороне сервера, когда у меня есть API и приложение в разных доменах.

Вот как выглядит промежуточное программное обеспечение рендеринга на стороне сервера в localhost:3000,пытается получить доступ к указанному cookie:

import Cookies from 'universal-cookie';

export function serverSideRendering(req, res, next) {
  const cookies = new Cookies(req.headers.cookie);
  const token = cookies.get('authorization');
  // ...
}

1 Ответ

0 голосов
/ 28 декабря 2018

Попробуйте изменить имя свойства "authorization" на "JWT-токен";

res.cookie('JWT-token', token, { signed: true, httpOnly: true, maxAge: 10000000 });

или вы можете попробовать метод js для нативного узла;

res.writeHead(200, {
  'Set-Cookie': 'authorization='+token,
});

И мой совет, донНе используйте cookie, используйте поля заголовков.Это поможет вам в будущем расширить ваше приложение до приложений для iOS и Android.

И вы сможете хранить свой токен в хранилище своего приложения, это более безопасно.

...