Мой запрос 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](https://i.stack.imgur.com/jQfhf.png)
Так со следующим 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](https://i.stack.imgur.com/UF2GM.png)
С помощью Edge я получаю предварительный запрос со статусом 200: ![enter image description here](https://i.stack.imgur.com/bcS5g.png)
Но в консоли я получаю ошибку:
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
Я получил правильное тело ответа ...