Я работаю над небольшим школьным проектом, который включает в себя доступ к микросервису, созданному с помощью Micronaut в java, с внешнего интерфейса. Когда я впервые развернул свой микросервис в облаке Google, я смог получить к нему удаленный доступ из Postman, однако, когда я попытался получить к нему доступ из внешнего интерфейса, я получил следующую ошибку:
Код:
sendOtp(phoneNumber) {
fetch(apiRequest, {
method: 'POST',
body: JSON.stringify({
phoneNumber: 'phoneNumber',
}),
headers: {
"Content-type": "application/json; charset=UTF-8"
}
}).then(response => {
return response.json()
}).then(json => {
this.setState({
otpResponse:json
});
});
}
Ошибка:
Доступ к выборке в 'X' из источника 'X' был заблокирован политикой CORS: Ответ на запрос перед полетом не проходит проверку контроля доступа: Нет 'Заголовок Access-Control-Allow-Origin 'присутствует в запрашиваемом ресурсе. Если непрозрачный ответ удовлетворяет вашим потребностям, установите режим запроса в 'no-cors', чтобы получить ресурс с отключенным CORS
Я немного заглянул в CORS и обнаружил, что мне нужно добавить следующее вмой application.yml
файл:
micronaut:
server:
cors:
enabled: true
Я также добавил https://cors-anywhere.herokuapp.com
в свой запрос на публикацию, поскольку это был обходной путь, который я нашел в Интернете.
Однако у меня все еще есть несколько вопросов, касающихсяэто:
1. Почему я могу получить доступ к этому микросервису из Почтальона, но не из интерфейса React?
2. Является ли использование https://cors-anywhere.herokuapp.com
безопасным решением? Есть ли у них проблемы с безопасностью?
3. Является ли эта проблема эксклюзивной для React / Web-страниц? Нужно ли включать CORS, если я хочу получить доступ к этому микросервису из других приложений?
Спасибо, любая помощь будет оценена!