【发布时间】:2019-08-03 03:27:36
【问题描述】:
我正在使用 AWS Serverless 构建一个包含大约 15 个 Lambda 函数的小型站点。
我的 Cloudformation 堆栈完全使用 SAM 构建。
我没有使用 Lambda 代理集成。
SAM yaml 模板配置中的 Api 部分如下所示:
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 网关“全局”添加标头?还是支持某种全球综合响应?
【问题讨论】:
标签: amazon-web-services cors aws-lambda aws-api-gateway aws-sam