向源请求添加自定义标头
您可以配置 CloudFront 以便向发送到您的源的请求中添加自定义标头。您可以使用这些自定义标头,从源发送和收集通过典型查看器请求无法获得的信息。您甚至可以针对每个源自定义这些标头。CloudFront 支持用于自定义源和 Amazon S3 源的自定义标头。
使用案例
您可以使用自定义标头,如下例所示:
- 识别来自 CloudFront 的请求
-
您可以标识您的源从 CloudFront 接收的请求。如果您想知道用户是否绕过 CloudFront,或者您使用了多个 CDN 并且希望了解有关哪些请求来自每个 CDN 的信息,此功能很有用。
注意
(如果您使用 Amazon S3 源并启用 Amazon S3 服务器访问日志记录,日志将不包含标头信息。)
- 确定哪些请求来自于特定分配
-
如果您配置多个 CloudFront 分配以使用相同的源,则可以在每个分配中添加不同的自定义标头。然后,可以使用来自您的源中的日志,确定哪些请求来自于哪个 CloudFront 分配。
- 允许跨源资源共享 (CORS)
-
如果您的某些查看器不支持跨源资源共享 (CORS),则可以配置 CloudFront,以便始终将
Origin
标头添加到发送到您的源的请求中。然后,可以配置您的源,以便为每个请求返回Access-Control-Allow-Origin
标头。您还必须将 CloudFront 配置为遵守 CORS 设置。 - 控制对内容的访问
-
可以使用自定义标头来控制对内容的访问。通过配置源以便仅在请求包含 CloudFront 添加的自定义标头时才响应请求,您可以防止用户绕过 CloudFront 并直接访问源上的内容。有关更多信息,请参阅 在自定义源上限制对文件的访问。
配置 CloudFront 以便向源请求添加自定义标头
要配置分配以便向其发送到源的请求添加自定义标头,请使用以下方法之一更新源配置:
-
CloudFront 控制台 – 在创建或更新分配时,请在添加自定义标头设置中指定标头名称和值。有关更多信息,请参阅 添加自定义标头。
-
CloudFront API – 对于要添加自定义标头的每个源,请在
Origin
内部的CustomHeaders
字段中指定标头名称和值。有关更多信息,请参阅《Amazon CloudFront API 参考》中的 CreateDistribution 或 UpdateDistribution。
如果您指定的标头名称和值在查看器请求中尚不存在,CloudFront 会将这些标头名称和值添加到源请求。如果标头存在,CloudFront 会在将请求转发到源之前覆盖该标头值。
有关适用于源自定义标头的配额,请参阅标头的配额。
CloudFront 无法添加到源请求的自定义标头
您无法配置 CloudFront 以便将以下任意标头添加到发送到您的源的请求:
-
Cache-Control
-
Connection
-
Content-Length
-
Cookie
-
Host
-
If-Match
-
If-Modified-Since
-
If-None-Match
-
If-Range
-
If-Unmodified-Since
-
Max-Forwards
-
Pragma
-
Proxy-Authorization
-
Proxy-Connection
-
Range
-
Request-Range
-
TE
-
Trailer
-
Transfer-Encoding
-
Upgrade
-
Via
-
以
X-Amz-
开头的标头 -
以
X-Edge-
开头的标头 -
X-Real-Ip
配置 CloudFront 以转发 Authorization
标头
当 CloudFront 转发查看器请求到您的源时,默认情况下,CloudFront 会删除一些查看器标头,包括 Authorization
标头。为了确保您的源始终能接收到源请求中的 Authorization
标头,您可以选择以下几种方式:
-
使用缓存策略将
Authorization
标头添加到缓存键中。源请求会自动包含缓存键中的所有标头。有关更多信息,请参阅 使用策略来控制缓存键。 -
使用将所有查看器标头转发到源的源请求策略。您无法通过源请求策略单独转发
Authorization
标头;当您使用该策略转发所有查看器标头时,CloudFront 会将Authorization
标头包含在查看器请求中。针对此用例,CloudFront 提供了名为 Managed-AllViewer 的托管源请求策略。有关更多信息,请参阅 使用托管式源请求策略。