#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' });