Вы можете установить куки для поддоменов.
Субдомен является дочерним узлом корневого домена , когда 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. *
Примечание 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 для простого внесения в белый список нескольких поддоменов / доменов.