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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建响应标头策略

您可以使用响应标头策略来指定 Amazon 在 HTTP 响应中 CloudFront 添加或删除的 HTTP 标头。有关响应标头策略以及使用它们的原因的更多信息,请参阅在 CloudFront响应中添加或删除 HTTP 标头

您可以在 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/v4/home#/policies/responseHeaders

  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 o verride 复选框。

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

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

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

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

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

    5. 在 “移除标题” 面板中,添加 CloudFront 要从来源的响应中移除且不包含在 CloudFront发送给查看者的响应中的任何标题的名称。

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

    6. Server-Timing header(Server-Timing 标头)面板中,选择 Enable(启用)开关并输入采样率(0 到 100(含)之间的数字)。

      有关 Server-Timing 标头的更多信息,请参阅Server-Timing 标头

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

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

将响应标头策略附加到现有分配(控制台)
  1. 在 CloudFront 控制台中打开发行版页面,网址为https://console.amazonaws.cn/cloudfront/v4/home#/distributions

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

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

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

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

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

将响应标头策略附加到新的分配(控制台)
  1. 打开 CloudFront 控制台,网址为https://console.amazonaws.cn/cloudfront/v4/home

  2. 选择创建分配

  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 ServerTimingHeadersConfig: Enabled: true SamplingRate: 50 RemoveHeadersConfig: Items: - Header: Vary - Header: X-Powered-By

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

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