控制源请求
当发送到 CloudFront 的查看器请求导致缓存未命中(请求的对象未在边缘站点缓存)时,CloudFront 会向源发送请求以检索对象。这称为源请求。源请求始终包含来自查看器请求的以下信息:
-
URL 路径(仅路径,不包含 URL 查询字符串或域名)
-
请求正文(如果有)
-
CloudFront 在每个源请求中自动包含的 HTTP 标头,包括
Host
、User-Agent
和X-Amz-Cf-Id
。
默认情况下,查看器请求中的其他信息(如 URL 查询字符串、HTTP 标头和 Cookie)不包含在源请求中。但是,您可能希望在源处接收其他一些此类信息,例如收集数据以进行分析或遥测。您可以使用源请求策略 控制源请求中包含的信息。
源请求策略与控制缓存键的缓存策略是分开的。通过这种分离,您能够在源处接收其他信息,并保持良好的缓存命中率(导致缓存命中的查看器请求比例)。您可以通过单独控制哪些信息包含在源请求中(使用源请求策略)以及哪些信息包含在缓存键中(使用缓存策略)来做到这一点。
虽然这两种策略是分开的,但它们却相关联。您在缓存键中包含的所有 URL 查询字符串、HTTP 标头和 Cookie(使用缓存策略)都将自动包含在源请求中。使用源请求策略指定要包含在源请求中但不 包含在缓存键中的信息。与缓存策略一样,您可以将源请求策略附加到 CloudFront 分配中的一个或多个缓存行为。
还可以使用源请求策略将其他 HTTP 标头添加到查看器请求中未包含的源请求。这些附加标头是 CloudFront 在发送源请求之前添加的,而标头值是根据查看器请求自动确定的。有关更多信息,请参阅添加 CloudFront 请求标头。
创建源请求策略
您可以使用源请求策略控制包含在 CloudFront 发送到源的请求中的值(URL 查询字符串、HTTP 标头和 Cookie)。您可以使用 Amazon Command Line Interface(Amazon CLI)或 CloudFront API 在 CloudFront 控制台中创建源请求策略。
创建源请求策略后,可以将它附加到 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 会将完整的查询字符串(包括其值),包含在源请求中。
-