View a markdown version of this page

创建响应标头策略 - Amazon CloudFront

创建响应标头策略

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

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

在创建自定义响应标头策略之前,检查是否有某个托管式响应标头策略适合您的使用案例。如果有,则可以将它附加到缓存行为。这样,您就不需要创建或管理自己的响应标头策略。

Console
创建响应标头策略(控制台)
  1. 登录到AWS 管理控制台,打开 CloudFront 控制台(地址为 https://console.aws.amazon.com/cloudfront/v4/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(自定义标头)面板中,添加要包含在策略中的任何自定义标头。

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

    5. 在 Remove headers(删除标头)面板中,添加您希望 CloudFront 从源响应中删除的且不包含在 CloudFront 发送给查看器的响应中的所有标头名称。

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

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

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

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

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

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

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

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

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

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

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

将响应标头策略附加到新的分配(控制台)
  1. 通过 打开 CloudFront 控制台https://console.aws.amazon.com/cloudfront/v4/home

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

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

  4. 选择分配的其他设置。有关更多信息,请参阅 所有分配设置参考。

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

CloudFormation

要使用 CloudFormation 创建响应标头策略,请使用 AWS::CloudFront::ResponseHeadersPolicy 资源类型。以下示例显示了 YAML 格式的 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

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

CLI

要使用 AWS Command Line Interface(AWS 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 调用中指定的字段的更多信息,请参阅了解响应标头策略以及有关 AWS SDK 或其他 API 客户端的 API 参考文档。

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

对于这两个 API 调用,请在缓存行为内的 ResponseHeadersPolicyId 字段中提供响应标头策略 ID。有关您在这些 API 调用中指定的其他字段的更多信息,请参阅 所有分配设置参考 以及有关 AWS SDK 或其他 API 客户端的 API 参考文档。