CorsConfiguration - AWS Serverless Application Model

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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-OriginAccess-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!') }