我正在为我的环境创建AWS Cloudformation模板,我找不到一种方法来启用CORS for API Gateway方法。
我可以使用AWS (这是官方医生)来配置它,但是如何在Cloudformation模板中进行配置呢?
发布于 2016-10-29 19:42:33
经过一些尝试和错误之后,我发现与CORS控制台向导相比,下面的CloudFormation模板片段将生成一个等效的选项方法:
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/
发布于 2016-10-28 00:24:57
API网关对自动CORS配置的支持目前只通过API网关控制台工作。在从swagger导入API或通过CloudFormation定义API时,您仍然可以自己设置CORS,但是必须指定设置OPTIONS方法的所有参数,以及将CORS特定的头添加到其他方法中。
此页展示了如何在导入swagger时设置CORS。通过CloudFormation设置CORS在概念上是相似的,但使用的是CloudFormation语法而不是swagger语法。
发布于 2018-05-02 05:05:19
试试这个:
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
https://stackoverflow.com/questions/40292888
复制相似问题