我正在使用AWS Serverless
构建一个包含大约 15 个 Lambda 函数的小型站点。
我的 Cloudformation 堆栈完全使用SAM
.
我没有使用 Lambda 代理集成。
yaml 模板配置中的 Api 部分SAM
如下所示:
AppApi:
Type: AWS::Serverless::Api
Properties:
Cors:
AllowMethods: "'*'"
AllowHeaders: "'Content-Type'"
AllowOrigin: "'*'"
...........More Stuff..........
当我部署这个SAM
yaml 模板时,我看到我的 ApiGateway 为所有方法创建了 OPTIONS 动词,当我使用 OPTIONS 动词发出请求时,我确实看到了CORS
正确的标题。
问题是其他动词(例如 POST)没有像 OPTIONS 请求那样将这些标头添加到它们的响应中,并且当我从浏览器运行我的 api 时,我的控制台中出现跨源策略错误。
所以我目前的解决方法是使用对特定状态代码的集成响应添加 CORS 标头,但我不能也不想处理 15 种方法,我想支持所有响应状态代码(例如 4xx\5xx 等)。
我的问题:
- 我在这里做错了什么还是这是一个
SAM
错误? - 如果这是一个错误,除了使用集成响应(或从我的代码)添加标题之外,还有其他解决方法吗?
- 有没有办法可以从 Api 网关“全局”添加标头?还是支持某种全球综合反应?