Я так долго боролся с ошибкой ниже. Я перепробовал так много уроков и ответов от stackoverflow, и ни одно из решений не решило мою проблему.
Доступ к XMLHttpRequest по адресу 'https://xxx' от источника 'http://localhost: 3000 ' заблокирован политикой CORS: Ответ на запрос предполетной проверки не проходит проверку контроля доступа: на запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».
Я использую SAM server для создания моего API.
template.yaml:
Globals:
Function:
Timeout: 10
Api:
Cors:
AllowMethods: "'DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT'"
AllowHeaders: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'"
AllowOrigin: "'*'"
Моя лямбда-функция: И мой ответ GET, и ответ OPTIONS имеют следующие возвращаемые заголовки:
headers: {
"Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'",
"Access-Control-Allow-Origin": "'*'",
"Access-Control-Allow-Methods": "'DELETE,GET,HEAD,OPTIONS,PATCH,POST,PUT'"
}
Мой API-интерфейс входит в мое приложение ReactJs с использованием функции усиления:
API.get(apiName, path, {
headers: {
"Access-Control-Allow-Origin": "*",
// "Access-Control-Allow-Headers": "Content-Type,X-Amz-Date,Authorization,X-Api-Key,x-requested-with",
// "Access-Control-Allow-Methods": "OPTIONS,POST,GET,PUT,DELETE",
// 'Content-Type': 'application/json'
}
})
Я испробовал каждую комбинацию Access-Control-Allow-Headers, Access-Control-Allow-Methods в моем template.yaml, моей лямбда-функции и моем reactJs проекте.
Вот мой результат, когда я вызываю опции в postman на моей конечной точке API. Таким образом, я получаю верные заголовки, так что, насколько я понимаю, мой API разрешает CORS.