AWS无服务器CORS问题:具有Lambda-Proxy集成的ApiGateway

时间:2019-10-30 10:00:36

标签: amazon-web-services aws-lambda cors aws-serverless

是的,我知道我需要在lambda函数中提供响应头,我正在使用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个带有“访问控制”的信息-Allow-Origin“:“来源失败”。 有什么建议可以开始调试吗?

编辑:其他信息 我增强了Cloudwatch日志记录(保存了完整的请求和响应)–奇怪的行为似乎是一些缓存。当一个请求的标头中不包含Origin时,所有后续请求都将获得相同的“旧” origin。 例如:

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

0 个答案:

没有答案