首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Cloudformation模板中启用API网关的CORS

在Cloudformation模板中启用API网关的CORS
EN

Stack Overflow用户
提问于 2016-10-27 19:36:19
回答 5查看 26K关注 0票数 38

我正在为我的环境创建AWS Cloudformation模板,我找不到一种方法来启用CORS for API Gateway方法。

我可以使用AWS (这是官方医生)来配置它,但是如何在Cloudformation模板中进行配置呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-10-29 19:42:33

经过一些尝试和错误之后,我发现与CORS控制台向导相比,下面的CloudFormation模板片段将生成一个等效的选项方法:

代码语言:javascript
运行
复制
OptionsMethod:
  Type: AWS::ApiGateway::Method
  Properties:
    AuthorizationType: NONE
    RestApiId:
      Ref: MyApi
    ResourceId:
      Ref: MyResourceOnWhichToEnableCORS
    HttpMethod: OPTIONS
    Integration:
      IntegrationResponses:
      - StatusCode: 200
        ResponseParameters:
          method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'"
          method.response.header.Access-Control-Allow-Methods: "'POST,OPTIONS'"
          method.response.header.Access-Control-Allow-Origin: "'*'"
        ResponseTemplates:
          application/json: ''
      PassthroughBehavior: WHEN_NO_MATCH
      RequestTemplates:
        application/json: '{"statusCode": 200}'
      Type: MOCK
    MethodResponses:
    - StatusCode: 200
      ResponseModels:
        application/json: 'Empty'
      ResponseParameters:
          method.response.header.Access-Control-Allow-Headers: false
          method.response.header.Access-Control-Allow-Methods: false
          method.response.header.Access-Control-Allow-Origin: false

*注意1:这是一个为POST取默认值的例子。显然,您需要更新Access-Control-Allow-Methods以包含所需的值。

*Note 2:感谢AWS CloudFormation团队最近推出的YAML支持。如果您需要转换为/从YAML/JSON,我发现这个站点很方便:http://www.json2yaml.com/

票数 75
EN

Stack Overflow用户

发布于 2016-10-28 00:24:57

API网关对自动CORS配置的支持目前只通过API网关控制台工作。在从swagger导入API或通过CloudFormation定义API时,您仍然可以自己设置CORS,但是必须指定设置OPTIONS方法的所有参数,以及将CORS特定的头添加到其他方法中。

此页展示了如何在导入swagger时设置CORS。通过CloudFormation设置CORS在概念上是相似的,但使用的是CloudFormation语法而不是swagger语法。

票数 3
EN

Stack Overflow用户

发布于 2018-05-02 05:05:19

试试这个:

代码语言:javascript
运行
复制
  OPTIONS: 
   Type: AWS::ApiGateway::Method 
   Properties: ApiKeyRequired: false
   RestApiId: !Ref YourAPI 
   ResourceId: !Ref YourResourceName 
   HttpMethod: OPTIONS 
   AuthorizationType: NONE 
   Integration: 
    Type: MOCK 
    IntegrationResponses: 
     - StatusCode: 200 
     ResponseParameters: 
      method.response.header.Access-Control-Allow-Headers: "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'" 
      method.response.header.Access-Control-Allow-Methods: "'GET,OPTIONS'" 
      method.response.header.Access-Control-Allow-Origin: "'*'" 
     ResponseTemplates: 
      application/json: '' 
    PassthroughBehavior: WHEN_NO_MATCH 
    RequestTemplates: 
     application/json: '{"statusCode": 200}' 
    Type: MOCK 
   MethodResponses: 
   - StatusCode: 200 
   ResponseModels: 
    application/json: 'Empty' 
   ResponseParameters: 
    method.response.header.Access-Control-Allow-Headers: false 
    method.response.header.Access-Control-Allow-Methods: false 
    method.response.header.Access-Control-Allow-Origin: false
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40292888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档