Я знаю, что этот вопрос может быть дублирован, но ни один из существующих вопросов не указывает на то, что я не делаю ...
Я развернул API с использованием безсерверной инфраструктуры, но у меня возникли проблемы с CORS.
Я делаю запрос на получение, используя axios:
axios.get('https://test.execute-api.us-west-1.amazonaws.com/dev/test?from=2012-01-09T21:40:00Z')
.then(response => {
this.data = response.data;
})
.catch(error => console.log(error))
И я получаю следующую ошибку:
Access to XMLHttpRequest at 'https://test.execute-api.us-west-1.amazonaws.com/dev/test?from=2012-01-09T21:40:00Z' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Что я уже сделал:
- Убедился, что в API Gateway есть метод OPTIONS с ответом метода, который выглядит следующим образом:
- Убедитесь, что я внедрил эти изменения.
Кроме того, ответ моей функции Lambda возвращает следующие заголовки:
return events.APIGatewayProxyResponse{
StatusCode: http.StatusOK,
Headers: map[string]string{
"Access-Control-Allow-Origin": "http://localhost:8080",
"Access-Control-Allow-Credentials": "true",
},
Body: string(jsonEvents),
}, nil
Я также пытался установить Access-Control-Allow-Origin
в '*'
Мой файл serverless.yml имеет cors: true
для каждого из событий функции:
functions:
deploymentFrequency:
handler: bin/update/deployment-frequency
events:
- http:
path: deployment-frequency
method: post
cors: true
fetchDeploymentFrequency:
handler: bin/fetch/deployment-frequency
events:
- http:
path: deployment-frequency
method: get
cors: true
Чего мне не хватает? Ничто не похоже на работу. Запрос от Postman работает нормально, и похоже, что он включает заголовки, поэтому, похоже, это проблема метода OPTIONS.