Я хотел бы расширить мою монолитную настройку jHipster со вторым интерфейсным приложением, которое обращается к тому же API с другого URL-адреса. В качестве первого шага я включил CORS в application.yml
, и я отправляю запрос из front-end с флагом withCredentials
. Я использую сеансы и не проверяю JWT.
Многие методы работают сейчас, как ожидалось, но не все. Предполетный (OPTIONS
запрос) всегда проходит и работает так, как ожидалось. Ответ этого вызова содержит правильные заголовки CORS.
Фактический запрос (например, запрос POST для входа), однако, требует также заголовка (Access-Control-Allow-Origin
) в ответе. Этот заголовок автоматически устанавливается на мои пользовательские интерфейсы REST, но он не установлен в jHipster-генерируемых методах, таких как /api/authentication
или /api/logout
. Он также не работает с Spring ресурсами, защищенными безопасностью, такими как /api/account
(только если он не вошел в систему, 401
, после чего он работает так, как ожидалось, с правильными заголовками)
Что касается выхода из системы, например, Google Chrome реагирует со следующим сообщением на консоли, даже если вызов проходит через вкладку Сеть (POST
статус ответа 200):
XMLHttpRequest не может загрузить http://localhost:8080/api/logout. В запрошенном ресурсе нет заголовка "Access-Control-Allow-Origin". Origin 'http://localhost:9000', следовательно, не допускается.
Мне было интересно, что я здесь делаю неправильно. Я думаю, что заголовки настроены неправильно. Теперь я могу вручную добавить заголовок (например, в AjaxAuthenticationSuccessHandler
), но это кажется неправильным.
Я использую довольно устаревшую версию jHipster 3.7.0
. Однако я бы предпочел не обновлять основной проект.
Есть ли у вас какие-либо идеи, что может быть причиной этой проблемы?
Заголовки
Вот полные заголовки вызова POST на /api/logout
. Вызов OPTIONS
работает так, как ожидалось, но в ответе POST
заголовок Access-Control-Allow-Origin
отсутствует:
OPTIONS
Запрос
OPTIONS /api/logout HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Access-Control-Request-Method: POST
Origin: http://localhost:9000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36
Access-Control-Request-Headers: x-csrf-token
Accept: */*
DNT: 1
Referer: http://localhost:9000/
Accept-Encoding: gzip, deflate, br
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4,de-CH;q=0.2,it;q=0.2