У меня есть API, встроенный в Java / Spring, размещенный в облаке, и недавно я столкнулся с проблемами CORS, когда веб-сайт не мог его использовать. Я узнал, что мой API не поддерживает CORS. Вот как я решил свою проблему:
https://spring.io/guides/gs/rest-service-cors/ (поиск "Включение CORS" на странице)
Просто добавив аннотацию @CrossOrigin
, вы получите:
включает заголовки контроля доступа CORS в свой ответ
Это, похоже, решило мою проблему изначально. Однако из-за недостаточной вовлеченности с моей стороны в решение этой проблемы (мне просто нужно было добавить аннотацию) у меня, очевидно, возникли некоторые недоразумения. Возникают другие проблемы. При проверке моего ответа я заметил, что у меня есть нулевые значения для getAllResponseHeaders
и getResponseHeader
. Так что мой ответ CORS не отправляет никаких заголовков обратно.
Вопросы:
В каких случаях мне нужно отправлять заголовки ответов назад? После прочтения документа Spring я узнал, что по умолчанию аннотация @CrossOrigin
принимает все источники. Это означает, что мой API должен принимать запросы от всех внешних ресурсов. Но, по-видимому, это не удается с запросом React "fetch". Из исследования, которое я делаю, я думаю, что мне может понадобиться отправить заголовок обратно, но я действительно не знаю, почему / когда мне нужно это сделать.
Почему Postman способен обходить проблемы с CORS? Даже до того, как я включил серверную часть CORS, запросы через Postman работали как положено.