У меня есть API-стек за API-шлюзом. Я использую Connexion, и у меня есть код, куда он добавляет ответ, связанный с CORS.
app = connexion.FlaskApp(__name__, specification_dir='swagger/')
app.add_api('swagger.yaml', arguments={'title': 'MyApp Server'})
app.app.json_encoder = JSONEncoder
CORS(app.app)
app.run()
Я убедился, что cors включен на стороне шлюза API. Я могу запустить все конечные точки API, используя curl. заголовки моих запросов через curl (я добавил -H 'ORIGIN: http://localhost: 8080 ' для имитации поведения браузера).
> POST /dev/current/login HTTP/2
> Host: <host>.execute-api.us-east-1.amazonaws.com
> User-Agent: curl/7.54.0
> Accept: */*
> Origin: http://localhost:8080
Ответ, который я получаю
< HTTP/2 200
< content-type: application/json
< content-length: 560
< date: Fri, 17 Jan 2020 21:08:20 GMT
< x-amzn-requestid: <>
< access-control-allow-origin: http://localhost:8080
< x-amzn-remapped-content-length: 560
< x-amz-apigw-id: <>
< vary: Origin
...
Я пытаюсь создать веб-приложение. Когда я симулирую подобное поведение, я получаю ошибку CORS.
:path: /dev/current/login
:scheme: https
accept: application/json, text/plain, */*
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
content-length: 342
content-type: application/json;charset=UTF-8
origin: http://localhost:8080
referer: http://localhost:8080/
sec-fetch-mode: cors
response
content-encoding: gzip
content-length: 43
content-type: application/json
date: Fri, 17 Jan 2020 20:31:02 GMT
status: 403
via: 1.1 <CF Host>.cloudfront.net (CloudFront)
x-amzn-errortype: ForbiddenException
x-cache: Error from cloudfront
Что я делаю неправильно.
Мой клиент написан на реаги.
Axios.post('https://<host>.execute-api.us-east-1.amazonaws.com/dev/current/login', {
headers: {
'Access-Control-Allow-Origin': '*',
'X-Api-Key': 'API key',
'ORIGIN': 'http://localhost:443',
}
}).then(v => console.log(v)).catch(c => console.log(c));