Lambda使用API​​网关提供不正确的CORS响应

时间:2017-09-28 16:54:44

标签: caching cors aws-lambda aws-api-gateway

我在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故障。

我找不到关于此行为的任何文档以及为什么会发生这种情况?

1 个答案:

答案 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标题回复是*