Как разделить cookie-файлы между поддоменами?

#angular #express #cross-domain #subdomain #setcookie

#angular #экспресс #междоменный #поддомен #setcookie

Вопрос:

У меня есть серверная часть express, которая размещена на https://logindev.example.com , и интерфейс, размещенный на https://www.dev.example.com . При входе в интерфейс сервер аутентификации устанавливает cookie с «example.com » устанавливается в качестве атрибута домена. Но cookie-файл не сохраняется в браузере.

Я вижу set-cookie в ответе, хотя

 set-cookie: token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6Imlkb3Vnd2FybmVyQGdtYWlsLmNvbSIsInByb3ZpZGVyIjoiZW1haWwiLCJpYXQiOjE2MDc3NDkwODgsImV4cCI6MjIxMjU0OTA4OH0.dFeBqr_b58WEhsLf-q8IOM6_tANhweqbCIBngLnp1Pk; Domain=example.com; Path=/
 

Интерфейс — Angular 10 и отправляет запрос на аутентификацию на серверную часть аутентификации с помощью HttpClient с заголовком учетных данных, установленным на «включить».
Серверная часть аутентификации устанавливает cookie-файл, используя следующий код.

 res.cookie('token', 'xxxxx', { domain: 'example.com' });
 

Я пытался разобраться в этой проблеме, но пока безуспешно. Я был бы признателен, если кто-нибудь сможет мне помочь в этом

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

Ответ №1:

Во время настройки файлов cookie просто используйте a . в начале имени домена:

 Cookie.set('key', 'value', { domain: '.example.com' })
 

Cookie js-cookie Это потрясающая библиотека для более простой работы с cookie-файлами в браузере. этот трюк разделит файлы cookie с dotted domain с базовым доменом и всеми его поддоменами.

В среде узла это то же самое, что и выше:

 res.cookie('key', 'value', { domain: '.example.com' });