创建响应标头策略 - Amazon CloudFront

创建响应标头策略

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

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

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

Console
创建响应标头策略(控制台)
  1. 登录到AWS Management Console,打开 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(创建分配)以创建分配。

AWS CloudFormation

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