创建响应标头策略
可以使用响应标头策略指定 Amazon CloudFront 在 HTTP 响应中添加或删除的 HTTP 标头。有关响应标头策略以及使用它们的原因的更多信息,请参阅使用策略在 CloudFront 响应中添加或删除 HTTP 标头。
您可以在 CloudFront 控制台中创建响应标头策略。或者,您可以使用 Amazon CloudFormation、Amazon Command Line Interface(Amazon CLI)或 CloudFront API 创建一个标头。创建响应标头策略后,将它附加到 CloudFront 分配中的一个或多个缓存行为。
在创建自定义响应标头策略之前,检查是否有某个托管式响应标头策略适合您的使用案例。如果有,则可以将它附加到缓存行为。这样,您就不需要创建或管理自己的响应标头策略。
- Console
-
创建响应标头策略(控制台)
-
登录到Amazon Web Services Management Console,打开 CloudFront 控制台(地址为 https://console.amazonaws.cn/cloudfront/v4/home#/policies/responseHeaders
)的 Policies(策略)页面,转到 Response headers(响应标头)选项卡。 -
选择 Create response headers policy(创建响应标头策略)。
-
在 Create response headers policy(创建响应标头策略)表单中,执行以下操作:
-
在 Details(详细信息)面板中,输入响应标头策略的 Name(名称)和(可选)解释策略用途的 Description(描述)。
-
在 Cross-origin resource sharing (CORS) [跨源资源共享(CORS)]面板中,选择 Configure CORS(配置 CORS)切换按钮并配置要添加到策略的任何 CORS 标头。如果您希望配置的标头覆盖 CloudFront 从源接收的标头,请选中 Origin override(源覆盖)复选框。
有关 CORS 标头设置的更多信息,请参阅CORS 标头。
-
在 Security headers(安全标头)面板中,选择切换按钮并配置要添加到策略的每个安全标头。
有关安全标头设置的更多信息,请参阅安全标头。
-
在 Custom headers(自定义标头)面板中,添加要包含在策略中的任何自定义标头。
有关自定义标头设置的更多信息,请参阅自定义标头。
-
在 Remove headers(删除标头)面板中,添加您希望 CloudFront 从源响应中删除的且不包含在 CloudFront 发送给查看器的响应中的所有标头名称。
有关删除标头设置的更多信息,请参阅删除标头。
-
在 Server-Timing header(Server-Timing 标头)面板中,选择 Enable(启用)开关并输入采样率(0 到 100(含)之间的数字)。
有关
Server-Timing
标头的更多信息,请参阅Server-Timing 标头。
-
-
选择 Create(创建)以创建策略。
创建响应标头策略后,您可以将它附加到 CloudFront 分配中的某个缓存行为。
将响应标头策略附加到现有分配(控制台)
-
在 CloudFront 控制台中打开 Distributions (分配) 页面,网址为 https://console.amazonaws.cn/cloudfront/v4/home#/distributions
。 -
选择要更新的分配,然后选择行为选项卡。
-
选择要更新的缓存行为,然后选择 Edit(编辑)。
或者,要创建新的缓存行为,请选择 Create behavior(创建行为)。
-
对于 Response headers policy(响应标头策略),选择要添加到缓存行为的策略。
-
选择 Save changes(保存更改)以更新缓存行为。如果要创建新的缓存行为,请选择 Create behavior(创建行为)。
将响应标头策略附加到新的分配(控制台)
通过 打开 CloudFront 控制台https://console.amazonaws.cn/cloudfront/v4/home
-
选择 Create distribution(创建分配)。
-
对于 Response headers policy(响应标头策略),选择要添加到缓存行为的策略。
-
选择分配的其他设置。有关更多信息,请参阅 分配设置参考。
-
选择 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::ResponseHeadersPolicy。
- CLI
-
要使用 Amazon Command Line Interface(Amazon CLI)创建响应标头策略,请使用 aws cloudfront create-response-headers-policy 命令。您可以使用输入文件来提供命令的输入参数,而不是将每个单独的参数指定为命令行输入。
创建响应标头策略(通过 CLI 并使用输入文件)
-
使用以下命令创建名为
response-headers-policy.yaml
的文件。此文件包含 create-response-headers-policy 命令的所有输入参数。aws cloudfront create-response-headers-policy --generate-cli-skeleton yaml-input > response-headers-policy.yaml
-
打开刚创建的
response-headers-policy.yaml
文件。编辑文件以指定策略名称和所需的响应标头策略配置,然后保存文件。有关响应标头策略设置的更多信息,请参阅了解响应标头策略。
-
使用以下命令创建响应标头策略。您创建的策略使用来自
response-headers-policy.yaml
文件的输出参数。aws cloudfront create-response-headers-policy --cli-input-yaml file://response-headers-policy.yaml
记下命令输出中的
Id
值。这是响应标头策略 ID。您需要它才能将策略附加到 CloudFront 分配的缓存行为。
将响应标头策略附加到现有分配(通过 CLI 并使用输入文件)
-
使用以下命令保存要更新的 CloudFront 分配的分配配置。将
distribution_ID
替换为分配 ID。aws cloudfront get-distribution-config --id
distribution_ID
--output yaml > dist-config.yaml -
打开刚创建的名为
dist-config.yaml
的文件。编辑此文件,对缓存行为进行以下更改以使它使用响应标头策略。-
在缓存行为中,添加名为
ResponseHeadersPolicyId
的字段。对于字段的值,请使用创建策略后记下的响应标头策略 ID。 -
将
ETag
字段重命名为IfMatch
,但不更改字段的值。
完成后保存该文件。
-
-
使用以下命令将分配更新为使用响应标头策略。将
distribution_ID
替换为分配 ID。aws cloudfront update-distribution --id
distribution_ID
--cli-input-yaml file://dist-config.yaml
将响应标头策略附加到新的分配(通过 CLI 并使用输入文件)
-
使用以下命令创建名为
distribution.yaml
的文件。此文件包含 create-distribution 命令的所有输入参数。aws cloudfront create-distribution --generate-cli-skeleton yaml-input > distribution.yaml
-
打开刚创建的
distribution.yaml
文件。在默认缓存行为中,在ResponseHeadersPolicyId
字段中输入创建策略后记下的响应标头策略 ID。继续编辑该文件以指定所需的分配设置,然后在完成后保存该文件。有关分配设置的更多信息,请参阅分配设置参考。
-
使用以下命令通过
distribution.yaml
文件中的输入参数创建分配。aws cloudfront create-distribution --cli-input-yaml file://distribution.yaml
-
- API
-
要使用 CloudFront API 创建响应标头策略,请使用 CreateResponseHeadersPolicy。有关您在此 API 调用中指定的字段的更多信息,请参阅了解响应标头策略以及有关 Amazon SDK 或其他 API 客户端的 API 参考文档。
创建响应标头策略后,可以使用下面的任何一个 API 调用将其附加到缓存行为:
-
要将该配置附加到现有分配中的缓存行为,请使用 UpdateDistribution。
-
要将该配置附加到新分配中的缓存行为,请使用 CreateDistribution。
对于这两个 API 调用,请在缓存行为内的
ResponseHeadersPolicyId
字段中提供响应标头策略 ID。有关您在这些 API 调用中指定的其他字段的更多信息,请参阅 分配设置参考 以及有关 Amazon SDK 或其他 API 客户端的 API 参考文档。 -