本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
控制源请求
当查看者的请求 CloudFront 导致缓存失败(请求的对象未在边缘位置缓存)时, CloudFront 会向源发送请求以检索该对象。这称为源请求。源请求始终包含来自查看器请求的以下信息:
-
URL 路径(仅路径,不包含 URL 查询字符串或域名)
-
请求正文(如果有)
-
每个源请求中 CloudFront 自动包含的 HTTP 标头
Host
,包括User-Agent
、和X-Amz-Cf-Id
默认情况下,查看器请求中的其他信息(如 URL 查询字符串、HTTP 标头和 Cookie)不包含在源请求中。(例外:使用旧版缓存设置时,默认情况下会将标头 CloudFront 转发到您的来源。) 然而,您可能希望在源处接收其它一些此类信息,例如收集数据以进行分析或遥测。您可以使用源请求策略 控制源请求中包含的信息。
源请求策略与控制缓存键的缓存策略是分开的。通过这种分离,您能够在源处接收其他信息,并保持良好的缓存命中率(导致缓存命中的查看器请求比例)。您可以通过单独控制哪些信息包含在源请求中(使用源请求策略)以及哪些信息包含在缓存键中(使用缓存策略)来做到这一点。
虽然这两种策略是分开的,但它们却相关联。您在缓存键中包含的所有 URL 查询字符串、HTTP 标头和 Cookie(使用缓存策略)都将自动包含在源请求中。使用源请求策略指定要包含在源请求中但不 包含在缓存键中的信息。就像缓存策略一样,您可以将源请求策略附加到 CloudFront 分配中的一个或多个缓存行为。
还可以使用源请求策略将其他 HTTP 标头添加到查看器请求中未包含的源请求。这些额外的标头是在发送原始请求 CloudFront 之前添加的,标头值是根据查看者的请求自动确定的。有关更多信息,请参阅添加 CloudFront 请求标头。
创建源请求策略
您可以使用源请求策略来控制 CloudFront 发送到您的源的请求中包含的值(URL 查询字符串、HTTP 标头和 Cookie)。您可以在 CloudFront 控制台中使用 Amazon Command Line Interface (Amazon CLI) 或 CloudFront API 创建源请求策略。
创建源请求策略后,将其附加到 CloudFront 分配中的一个或多个缓存行为。
源请求策略不是必需的。如果缓存行为未附加源请求策略,则源请求只会包含缓存策略中指定的所有值。
注意
要使用源请求策略,缓存行为还必须使用缓存策略。如果没有缓存策略,则无法在缓存行为中使用源请求策略。
了解源请求策略
CloudFront 为常见用例提供了一些预定义的源请求策略,称为托管策略。您可以使用这些托管策略,也可以创建特定于您的需求的源请求策略。有关托管策略的更多信息,请参阅使用托管源请求策略。
源请求策略包含以下设置,这些设置的分类如下:策略信息 和源请求设置。
策略信息
- 名称
-
用于标识源请求策略的名称。在控制台中,可以使用名称将源请求策略附加到缓存行为。
- 描述
-
描述源请求策略的注释。该项为可选项。
源请求设置
源请求设置指定查看者请求中包含的值,这些值包含在 CloudFront 发送到来源的请求中(称为源请求)。这些值可以包括 URL 查询字符串、HTTP 标头和 Cookie。您指定的值包含在源请求中,但不会包含在缓存键中。有关控制缓存键的信息,请参阅控制缓存键。
- 标头
-
原始请求中 CloudFront 包含的查看器请求中的 HTTP 标头。对于标头,您可以选择下列设置之一:
-
无 – 查看器请求中的 HTTP 标头不 会包含在源请求中。
-
所有查看器标头 – 查看器请求中的所有 HTTP 标头都包含在源请求中。
-
所有查看者标头和以下 CloudFront标头-查看者请求中的所有 HTTP 标头都包含在原始请求中。此外,您可以指定要将哪些 CloudFront 标头添加到源请求中。有关 CloudFront 标题的更多信息,请参阅添加 CloudFront 请求标头。
-
Include the following headers(包含以下标头)– 您可以指定哪些 HTTP 标头包含在源请求中。
注意
请勿指定已包含在源自定义标头设置中的标头。有关更多信息,请参阅配置 CloudFront 为向源请求添加自定义标头。
-
除以下范围之外的所有查看器标头–您指定哪些 HTTP 标头不包含在源请求中。除了指定的标头外,查看器请求中的所有其他 HTTP 标头都包括在内。
当您使用 “所有查看器标题和以下标头”、“包括以下 CloudFront 标题” 或 “除设置之外的所有查看器标头” 时,只能通过标头名称指定 HTTP 标头。 CloudFront 在原始请求中包含完整的标头,包括其值。
注意
当您使用 “除移除查看者标题之外的所有查看者
Host
标头” 时, CloudFront 会在原始请求中添加一个带有来源域名的新Host
标头。 -
- Cookie
-
原始请求中 CloudFront 包含的查看者请求中的 Cookie。对于 Cookie,您可以选择下列设置之一:
-
无 – 查看器请求中的 Cookie 不 会包含在源请求中。
-
全部 – 查看器请求中的所有 Cookie 都包含在源请求中。
-
包括以下 Cookie – 您可以指定查看器请求中的哪些 Cookie 包含在源请求中。
-
除以下范围之外的所有 Cookie – 您可以指定查看器请求中的哪些 Cookie 不包含在源请求中。查看器请求中的所有其他 Cookie 都包含在内。
当您使用 “包括以下 Cookie” 或 “除外所有 Cookie” 设置时,您只能按其名称指定 Cookie。 CloudFront 在原始请求中包含完整的 Cookie,包括其值。
-
- 查询字符串
-
原始请求中 CloudFront 包含的查看者请求中的 URL 查询字符串。对于查询字符串,可以选择下列设置之一:
-
无 – 查看器请求中的查询字符串不 会包含在源请求中。
-
全部 – 查看器请求中的所有查询字符串都包含在源请求中。
-
包含指定以下字符串 – 您可以指定查看器请求中的哪些查询字符串包含在源请求中。
-
除以下范围之外的所有查询字符串 – 您可以指定查看器请求中的哪些查询字符串不包含在源请求中。所有其他查询字符串都包括在内。
使用 “包括以下查询字符串” 或 “除外的所有查询字符串” 设置时,只能按名称指定查询字符串。 CloudFront 在原始请求中包含完整的查询字符串,包括其值。
-