CORS выдают различное поведение в зависимости от браузера - PullRequest
0 голосов
/ 14 апреля 2020

Мой запрос CORS не ведет себя одинаково в разных браузерах.

На интерфейсе я пробовал Angular HttpClient, Vuejs Выборка или Ax * ios.

На бэкэнд, у нас есть Go API, настройка CORS выполняется с помощью "github.com/rs/cors". Я просто разрешаю все с return cors.AllowAll().Handler(handler)

Служба развернута на AWS с API шлюз в середине. Я также включил CORS

enter image description here

Так со следующим javascript кодом:

const response = await Vue.prototype.axios({
  method: 'get',
  url,
  headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json',
    Authorization: `Bearer ${token}`
  }
});

In Firefox I получить ожидаемый ответ (и в заголовке ответа я вижу

enter image description here

С помощью Edge я получаю предварительный запрос со статусом 200: enter image description here

Но в консоли я получаю ошибку:

SEC7120: [CORS] http://localhost: 8080 не нашел http://localhost: 8080 в заголовке ответа Access-Control-Allow-Origin для ресурса с несколькими источниками в https://aws.myapi.com

In Chrome Don не вижу ни одного запроса OPTIONS, но GET возвращает код состояния 200, например Edge. В консоли:

Доступ к XMLHttpRequest по адресу https://aws.myapi.com 'origin' http://localhost: 8080 'было заблокировано политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

Раньше я имел эту ошибку в Firefox, когда сервер не был настроен для CORS.

Есть идеи, как это исправить?

РЕДАКТИРОВАТЬ: я пытаюсь отладить с помощью curl:

curl -v -X ОПЦИИ -H 'Происхождение: http://localhost: 8080 '-H' Авторизация: Носитель xxx 'https://aws.myapi

Я получаю правильные заголовки ответа:

< HTTP/2 200 
< date: Tue, 14 Apr 2020 15:19:17 GMT
< content-type: application/json
< content-length: 0
< x-amzn-requestid: 0ec3a025-eb68-4698-955e-2b764dfa9f6b
< access-control-allow-origin: *
< access-control-allow-headers: Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token
< x-amz-apigw-id: K-4iaFEEliAFndA=
< access-control-allow-methods: DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT

И запрос GET:

curl -v -X GET -H 'Источник: http://localhost: 8080 ' -H 'Авторизация: Bearer ey ...' https: ///aws.myapi

Я получил правильное тело ответа ...

...