CORS в Мирконавт Микросервис - PullRequest
0 голосов
/ 25 октября 2019

Я работаю над небольшим школьным проектом, который включает в себя доступ к микросервису, созданному с помощью 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, если я хочу получить доступ к этому микросервису из других приложений?

Спасибо, любая помощь будет оценена!

1 Ответ

1 голос
/ 25 октября 2019
  1. Почему я могу получить доступ к этому микросервису из Почтальона, но не из интерфейса React?

Поскольку CORS не относится к вашим запросам Почтальона.

Является ли использование https://cors -anywhere.herokuapp.com безопасным решением? Это какие-то проблемы с безопасностью?

Как правило, вы не хотите этого делать. Вы хотите настроить CORS для разрешения запросов от вашего внешнего интерфейса.

Является ли эта проблема эксклюзивной для страниц React / Web? Нужно ли мне включать CORS, если я хочу получить доступ к этому микросервису из других приложений?

Нет, это не только React. Нужно ли вам разрешать CORS получать доступ к этой услуге из других приложений, зависит от того, что это за приложения. Если это приложения JS, работающие в браузерах, обслуживаемых из разных источников, то да. Если они являются клиентскими приложениями, отправляющими запросы к вашему API, нет.

Посмотрите на раздел Разрешенные источники в https://docs.micronaut.io/1.2.5/guide/index.html#cors.. Вам нужно будет настроить любой источник вашего приложения React. с.

Надеюсь, это поможет.

...