CorsConfiguration - AWS Serverless Application Model

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

CorsConfiguration

管理 API Gateway API 的跨來源資源共用 (CORS)。指定允許作為字符串的域或指定帶有其他 CRS 配置的字典。

注意

CORS 需要修 AWS SAM 改您的 OpenAPI 定義。在中建立內嵌 OpenAPI 定義以DefinitionBody開啟 CORS。如果CorsConfiguration在 OpenAPI 定義中設定,也在屬性層級設定,則會將它們 AWS SAM 合併。屬性層級的優先順序高於 OpenAPI 定義。

如需有關 CORS 的詳細資訊,請參閱 API Gateway 開發人員指南中的針對 API Gateway REST API 資源啟用 CO RS。

語法

若要在 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 模板文件的一部分,顯示配置了 AWS::Serverless::Function CORS 的AWS::Serverless::Api定義和. 如果您使用 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: "'www.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': 'www.example.com', 'Access-Control-Allow-Methods': 'POST, GET' }, 'body': json.dumps('Hello from Lambda!') }