AWS-проблема безсервисного CORS: ApiGateway с интеграцией Lambda-Proxy - PullRequest
0 голосов
/ 30 октября 2019

Да, я знаю, что сам должен предоставить заголовок ответа в лямбда-функции, я использую python 3.7. Он работает как 90% времени

responseheaders = { "Content-Type": "application/json", "Access-Control-Allow-Origin": "failed-origin", "Access-Control-Allow-Headers": "Content-Type","Access-Control-Allow-Methods": "OPTIONS,POST,GET,DELETE,PATCH"}
if 'Origin' in event['headers']:
  origin = event['headers']['Origin']
  responseheaders['Access-Control-Allow-Origin'] = origin
return({
        'statusCode': 200,
        'headers': responseheaders
})

Я всегда отправляю одно и то жезапрос через почтальона, в большинстве случаев для источника CORS в заголовке запроса указывается источник, но по какой-то причине я не знаю, иногда я получаю 200 с ошибкой «Access-Control-Allow-Origin»: «-origin». Любые предложения, где я могу начать отлаживать это?

Редактировать: дополнительная информация Я улучшил ведение журнала Cloudwatch (я сохраняю полный запрос и ответ) - странное поведение, похоже, кеширование. Когда один запрос НЕ содержит в своем заголовке источник, все последующие запросы получают тот же «старый» источник. например:

GET /test with "Origin": "foo"
response with "foo" in cors-origin
GET /test with "Origin": "bar"
response with "bar" in cors-origin
GET /test without "Origin" in header
response with "bar" in cors-origin, instead of "failed-origin" <--- WHY?
GET /test with empty "Origin" in header
response with "" in cors-origin
...