Я разрабатываю бэкэнд-приложение на основе spring-boot и приложение на основе angularjs, размещенное в одном домене с разными поддоменами.
myapp-frontend.mydomain.com //my angularjs app
myapp-backend.mydomain.com //my spring-boot app
otherapp-frontend.mydomain.com //some existing app running on same domain but unrelated
Я пытаюсь установить cookie, который содержит токен jwt, сгенерированный в серверной части браузера, когда вызывается API входа из angularjs.
Файл cookie устанавливается в браузере с помощьюэтот код, когда я устанавливаю URL базового домена в Spring-Boot:
Cookie cookie = new Cookie("Authentication", jwt);
cookie.setPath("/");
cookie.setDomain("mydomain.com"); //this works
response.addCookie(cookie);
Этот файл cookie устанавливает другие приложения, размещенные на домене нашей компании, но не разделяет учетные данные пользователя с моим приложением.Поскольку я хочу, чтобы заголовок куки-файла Authentication был виден только моему веб-приложению, я попытался установить в коде URL субдомена внешнего интерфейса.Но это не работает.
...
cookie.setDomain("myapp-frontend.mydomain.com"); //not setting cookie
...
Я понимаю, что cookie не может быть установлен в разных доменах по соображениям безопасности, но почему настройка URL субдомена не работает?
Из любопытства я попытался поместить субдомен бэкэнда в setDomain (), а cookie был установлен в myapp-backend.mydomain.com, когда я зарегистрировался в инструментах разработчика Chrome.Поскольку он работает с URL-адресом базового домена, я считаю, что CORS уже правильно реализован.
Я что-то здесь упускаю?Любой вклад будет принята с благодарностью.