向源请求添加自定义标头 - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

向源请求添加自定义标头

您可以配置 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 字段中指定标头名称和值。有关更多信息,请参阅 CreateDistributionUpdateDistribution

如果您指定的标头名称和值在查看器请求中尚不存在,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 的托管源请求策略。有关更多信息,请参阅 使用托管源请求策略