как установить cookie на «.localhost» из приложения «экспресс / узел», чтобы к нему можно было получить доступ из «нечто.localhost» - PullRequest
1 голос
/ 25 апреля 2019

У меня есть приложение node / express, которое работает по адресу www.localhost: 1234.Теперь я хочу установить cookie httponly из экспресса в домене ".localhost".и хотите получить к нему доступ на поддоменах, таких как «thing.localhost: 1234 »или« что-то .localhost: 1234 ».Я пытался сделать это, но не работает.

js

let options = {
  path:'/*',
  domain:'.localhost',
  httpOnly: true,
  maxAge: (1000 * 60 * 60 * 24)
};
res.cookie('cookieName', 'cookieValue', options);

Заранее спасибо ...

1 Ответ

0 голосов
/ 17 июля 2019

Вы можете установить куки для поддоменов.

Субдомен является дочерним узлом корневого домена , когда DNS разрешает дерево. Чтобы быть действительным корневым доменом , он должен состоять из 2 частей, разделенных точкой.

Таким образом, something.localhost не делает его поддоменом localhost, хотя something.localhost разрешает то же самое, что и localhost.

Решение Добавить следующее в /etc/hosts.

127.0.0.1 app.com ## <- Becomes root domain
127.0.0.1 api.app.com
127.0.0.1 something.app.com

ДЕЙСТВИЕ: Теперь загрузите ваше веб-приложение, используя app.com:4000, и нажмите соответствующий API, используя api.app.com:4001/users (Сервер работает на PORT 4001)

Но теперь сохраненный файл cookie будет соответствовать домену api.app.com. Чтобы решить эту проблему, вам нужно установить домен в cookie как app.com (независимо от того, какой у вас корневой домен).

Решение:

Я использую express-session 1.16.2, мой конфиг выглядит как

app.use(session({
  secret: 'some-key',
  name: '_somecookie',
  resave: false,
  saveUninitialized: true,
  cookie: { domain: 'app.com', secure: false }, // <- THIS, set domain as 'app.com'
  store: myRedisStore,
}));

Теперь снова выполните ДЕЙСТВИЕ . Вы должны увидеть файл cookie, соответствующий домену .app.com, который используется всеми веб-приложениями в корневом каталоге app.com, например: проверять файлы cookie в app.com:4000 и api.app.com:4000 или something.app.com:4000. * 1048. *

enter image description here enter image description here

Примечание 1: Обязательно удалите все файлы cookie, соответствующие домену api.app.com, в результате выполнения ДЕЙСТВИЯ 1-й раз (проверьте, открыв api.app.com:4000 в браузере), в противном случае, в зависимости от реализации вашего сервера, вы можете не получить -установка куки, если он уже существует.

Примечание 2 Так как app.com делает http-запрос к api.app.com, убедитесь, что заголовок CORS настроен правильно, например:

res.header("Access-Control-Allow-Origin", 'http://app.com:4000');

Используйте связующее ПО Express Cors для простого внесения в белый список нескольких поддоменов / доменов.

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