创建响应标头策略 - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

创建响应标头策略

您可以使用响应标头策略来指定 Amazon CloudFront 将添加到 HTTP 响应中的 HTTP 标头。有关响应标头策略以及为何使用响应标头策略的更多信息,请参阅将 HTTP 标头添加到 CloudFront 响应

您可以通过 CloudFront 控制台、Amazon CloudFormation、 Amazon Command Line Interface(Amazon CLI)或 CloudFront API 创建响应标头策略。创建响应标头策略后,将它附加到 CloudFront 分配中的一个或多个缓存行为。

在创建自定义响应标头策略之前,建议您首先检查是否有某个托管式响应标头策略适合您的使用案例。如果是这种情况,您可以将托管式策略附加到缓存行为,而无需创建自定义策略。

Console

创建响应标头策略(控制台)

  1. 登录到Amazon Web Services Management Console,打开 CloudFront 控制台(地址为 https://console.amazonaws.cn/cloudfront/v3/home#/policies/responseHeaders)的 Policies(策略)页面,转到 Response headers(响应标头)选项卡。

  2. 选择 Create response headers policy(创建响应标头策略)。

  3. Create response headers policy(创建响应标头策略)表单中,执行以下操作:

    1. Details(详细信息)面板中,输入响应标头策略的 Name(名称)和(可选)解释策略用途的 Description(描述)。

    2. Cross-origin resource sharing (CORS) [跨源资源共享(CORS)]面板中,选择 Configure CORS(配置 CORS)切换按钮并配置要添加到策略的任何 CORS 标头。如果您希望配置的标头覆盖 CloudFront 从源接收的标头,请选中 Origin override(源覆盖)复选框。

      有关 CORS 标头设置的更多信息,请参阅CORS 标头

    3. Security headers(安全标头)面板中,选择切换按钮并配置要添加到策略的每个安全标头。

      有关安全标头设置的更多信息,请参阅安全标头

    4. Custom headers(自定义标头)面板中,添加要包含在策略中的任何自定义标头。

      有关自定义标头设置的更多信息,请参阅自定义标头

  4. 选择 Create(创建)以创建策略。

创建响应标头策略后,您可以将它附加到 CloudFront 分配中的某个缓存行为。

将响应标头策略附加到现有分配(控制台)

  1. 在 CloudFront 控制台中打开 Distributions (分配) 页面,网址为 https://console.amazonaws.cn/cloudfront/v3/home#/distributions

  2. 选择要更新的分配,然后选择行为选项卡。

  3. 选择要更新的缓存行为,然后选择 Edit(编辑)。

    或者,要创建新的缓存行为,请选择 Create behavior(创建行为)。

  4. 对于 Response headers policy(响应标头策略),选择要添加到缓存行为的策略。

  5. 选择 Save changes(保存更改)以更新缓存行为。[如果要创建新的缓存行为,请选择 Create behavior(创建行为)。]

将响应标头策略附加到新的分配(控制台)

  1. 通过 打开 CloudFront 控制台https://console.amazonaws.cn/cloudfront/v3/home

  2. 选择 Create distribution(创建分配)。

  3. 对于 Response headers policy(响应标头策略),选择要添加到缓存行为的策略。

  4. 选择分配的其他设置。有关更多信息,请参阅 您创建或更新分配时指定的值

  5. 选择 Create distribution(创建分配)以创建分配。

Amazon CloudFormation

要使用 Amazon CloudFormation 创建响应标头策略,请使用 AWS::CloudFront::ResponseHeadersPolicy 资源类型。以下示例显示了 YAML 格式的 Amazon CloudFormation 模板语法,用于创建响应标头策略。

Type: AWS::CloudFront::ResponseHeadersPolicy Properties: ResponseHeadersPolicyConfig: Name: EXAMPLE-Response-Headers-Policy Comment: Example response headers policy for the documentation CorsConfig: AccessControlAllowCredentials: false AccessControlAllowHeaders: Items: - '*' AccessControlAllowMethods: Items: - GET - OPTIONS AccessControlAllowOrigins: Items: - https://example.com - https://docs.example.com AccessControlExposeHeaders: Items: - '*' AccessControlMaxAgeSec: 600 OriginOverride: false CustomHeadersConfig: Items: - Header: Example-Custom-Header-1 Value: value-1 Override: true - Header: Example-Custom-Header-2 Value: value-2 Override: true SecurityHeadersConfig: ContentSecurityPolicy: ContentSecurityPolicy: default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'; frame-ancestors 'none' Override: false ContentTypeOptions: # You don't need to specify a value for 'X-Content-Type-Options'. # Simply including it in the template sets its value to 'nosniff'. Override: false FrameOptions: FrameOption: DENY Override: false ReferrerPolicy: ReferrerPolicy: same-origin Override: false StrictTransportSecurity: AccessControlMaxAgeSec: 63072000 IncludeSubdomains: true Preload: true Override: false XSSProtection: ModeBlock: true # You can set ModeBlock to 'true' OR set a value for ReportUri, but not both Protection: true Override: false

有关更多信息,请参阅《Amazon CloudFormation 用户指南》中的 AWS::CloudFront::ResponseHeadersPolicy

CLI

要使用 Amazon Command Line Interface(Amazon CLI)创建响应标头策略,请使用 aws cloudfront create-response-headers-policy 命令。您可以使用输入文件来提供命令的输入参数,而不是将每个单独的参数指定为命令行输入。

创建响应标头策略(通过 CLI 并使用输入文件)

  1. 使用以下命令创建名为 response-headers-policy.yaml 的文件,其中包含 create-response-headers-policy 命令的所有输入参数。

    aws cloudfront create-response-headers-policy --generate-cli-skeleton yaml-input > response-headers-policy.yaml
    注意

    yaml-input 选项仅适用于 Amazon CLI 版本 2。利用版本 1 的 Amazon CLI,您可以生成 JSON 格式的输入文件。有关更多信息,请参阅 Amazon Command Line Interface 用户指南中的从 JSON 或 YAML 输入文件生成 Amazon CLI 骨架和输入参数

  2. 打开刚创建的名为 response-headers-policy.yaml 的文件。编辑文件以指定要包含在策略中的策略名称和响应标头,然后保存文件。

    有关响应标头策略设置的更多信息,请参阅了解响应标头策略

  3. 利用来自 response-headers-policy.yaml 文件的输入参数,使用以下命令创建响应标头策略。

    aws cloudfront create-response-headers-policy --cli-input-yaml file://response-headers-policy.yaml

    记下命令输出中的 Id 值。这是响应标头策略 ID,您需要它才能将策略附加到 CloudFront 分配的缓存行为。

将响应标头策略附加到现有分配(通过 CLI 并使用输入文件)

  1. 使用以下命令保存要更新的 CloudFront 分配的分配配置。将 distribution_ID 替换为分配的 ID。

    aws cloudfront get-distribution-config --id distribution_ID --output yaml > dist-config.yaml
    注意

    --output yaml 选项仅适用于版本 2 的 Amazon CLI。利用版本 1 的 Amazon CLI,您可以生成 JSON 格式的输出。有关更多信息,请参阅 Amazon Command Line Interface 用户指南中的从 Amazon CLI 控制命令输出

  2. 打开刚创建的名为 dist-config.yaml 的文件。编辑文件,对要更新的每个缓存行为进行以下更改以使用响应标头策略。

    • 在缓存行为中,添加名为 ResponseHeadersPolicyId 的字段。对于字段的值,请使用创建策略后记下的响应标头策略 ID。

    • ETag 字段重命名为 IfMatch,但不更改字段的值。

    完成后保存该文件。

  3. 使用以下命令将分配更新为使用响应标头策略。将 distribution_ID 替换为分配的 ID。

    aws cloudfront update-distribution --id distribution_ID --cli-input-yaml file://dist-config.yaml

将响应标头策略附加到新的分配(通过 CLI 并使用输入文件)

  1. 使用以下命令创建名为 distribution.yaml 的文件,其中包含 create-distribution 命令的所有输入参数。

    aws cloudfront create-distribution --generate-cli-skeleton yaml-input > distribution.yaml
    注意

    yaml-input 选项仅适用于 Amazon CLI 版本 2。利用版本 1 的 Amazon CLI,您可以生成 JSON 格式的输入文件。有关更多信息,请参阅 Amazon Command Line Interface 用户指南中的从 JSON 或 YAML 输入文件生成 Amazon CLI 骨架和输入参数

  2. 打开刚创建的名为 distribution.yaml 的文件。在默认缓存行为中,在 ResponseHeadersPolicyId 字段中输入创建策略后记下的响应标头策略 ID。继续编辑该文件以指定所需的分配设置,然后在完成后保存该文件。

    有关分配设置的更多信息,请参阅您创建或更新分配时指定的值

  3. 使用以下命令通过 distribution.yaml 文件中的输入参数创建分配。

    aws cloudfront create-distribution --cli-input-yaml file://distribution.yaml
API

要使用 CloudFront API 创建响应标头策略,请使用 CreateResponseHeadersPolicy。有关您在此 API 调用中指定的字段的更多信息,请参阅 了解响应标头策略 以及 Amazon 开发工具包或其他 API 客户端的 API 参考文档。

创建响应标头策略后,可以使用下面的任何一个 API 调用将其附加到缓存行为:

对于这两个 API 调用,请在缓存行为的 RequestHeadersPolicyId 字段中提供响应标头策略的 ID。有关您在这些 API 调用中指定的其他字段的更多信息,请参阅 您创建或更新分配时指定的值 以及 Amazon 开发工具包或其他 API 客户端的 API 参考文档。