本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
CorsConfiguration
管理API閘道APIs的跨來源資源共用 (CORS)。指定允許作為字符串的域或指定帶有其他 CRS 配置的字典。
注意
CORS需 AWS SAM 要修改您的「開啟」API 定義。在中建立內嵌開啟API定義DefinitionBody
以開啟CORS。如果CorsConfiguration
在「開啟」API 定義中設定,也在屬性層級設定,則會 AWS SAM 合併它們。屬性層級優先於「開啟」API 定義。
如需詳細資訊CORS,請參閱API閘道開發人員指南中的啟用CORSAPI閘道RESTAPI資源。
語法
若要在 AWS Serverless Application Model (AWS SAM) 範本中宣告此實體,請使用下列語法。
YAML
AllowCredentials:
Boolean
AllowHeaders:String
AllowMethods:String
AllowOrigin:String
MaxAge:String
屬性
-
AllowCredentials
-
布林值,指出是否允許要求包含認證。
類型:布林值
必要:否
AWS CloudFormation 兼容性:此屬性是唯一的, AWS SAM 並且沒有相 AWS CloudFormation 等的屬性。
-
AllowHeaders
-
要允許的標頭字串。
類型:字串
必要:否
AWS CloudFormation 兼容性:此屬性是唯一的, AWS SAM 並且沒有相 AWS CloudFormation 等的屬性。
-
AllowMethods
-
包含要允許之HTTP方法的字串。
類型:字串
必要:否
AWS CloudFormation 兼容性:此屬性是唯一的, AWS SAM 並且沒有相 AWS CloudFormation 等的屬性。
-
AllowOrigin
-
允許的原始字符串。這可以是字串格式的逗號分隔清單。
類型:字串
必要:是
AWS CloudFormation 兼容性:此屬性是唯一的, AWS SAM 並且沒有相 AWS CloudFormation 等的屬性。
-
MaxAge
-
包含快取CORS預檢要求的秒數的字串。
類型:字串
必要:否
AWS CloudFormation 兼容性:此屬性是唯一的, AWS SAM 並且沒有相 AWS CloudFormation 等的屬性。
範例
CorsConfiguration
CORS配置示例。這只是 AWS SAM 模板文件的一部分,顯示了CORS配置的AWS::Serverless::Api定義和AWS::Serverless::Function. 如果您使用 Lambda 代理整合或HTTP代理整合,則後端必須傳回Access-Control-Allow-Origin
Access-Control-Allow-Methods
、和Access-Control-Allow-Headers
標頭。
YAML
Resources: ApiGatewayApi: Type: AWS::Serverless::Api Properties: StageName: Prod Cors: AllowMethods: "'POST, GET'" AllowHeaders: "'X-Forwarded-For'" AllowOrigin: "'https://example.com'" MaxAge: "'600'" AllowCredentials: true ApiFunction: # Adds a GET method at the root resource via an Api event Type: AWS::Serverless::Function Properties: Events: ApiEvent: Type: Api Properties: Path: / Method: get RestApiId: Ref: ApiGatewayApi Runtime: python3.10 Handler: index.handler InlineCode: | import json def handler(event, context): return { 'statusCode': 200, 'headers': { 'Access-Control-Allow-Headers': 'Content-Type', 'Access-Control-Allow-Origin': 'https://example.com', 'Access-Control-Allow-Methods': 'POST, GET' }, 'body': json.dumps('Hello from Lambda!') }