是的,我知道我需要在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