我在AWS内部的API网关后部署了 Lambda ,并启用了API缓存。
它已使用标准启用CORS 选项进行配置,该选项在 OPTIONS 方法上为Access-Control-Allow-Origin: *
创建了标头映射。
但是,当调用API以在Lambda上执行方法时,响应中的Access-Control-Allow-Origin
标头将被设置为请求中的origin
标头。
这导致了一个问题,因为我选择了启用API缓存。
这似乎会导致使用特定于域的Access-Control-Allow-Origin
响应缓存响应。即不是Access-Control-Allow-Origin: *
,而是Access-Control-Allow-Origin: {whatever the origin header of the request was
这导致客户端出现CORS故障。
我找不到关于此行为的任何文档以及为什么会发生这种情况?
答案 0 :(得分:0)
CORS响应是在Lambda内生成的,而不是API网关。
基于Python的Lambda使用的flask-cors库设置不正确。
根据文件:
send_wildcard(bool) - 如果为True,则originins参数为*,a 发送通配符Access-Control-Allow-Origin标头,而不是 请求的Origin标题。
默认值:False
所以在代码中
CORS(app)
已更改为
CORS(app, send_wildcard=True)
我知道得到了我想要的行为,Access-Control-Allow-Origin
标题回复是*