选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

添加 CloudFront 请求标头

聚焦模式
添加 CloudFront 请求标头 - Amazon CloudFront

您可以对 CloudFront 进行配置,以便向 CloudFront 从查看器收到的请求中添加特定 HTTP 标头并转发到源或边缘函数。这些 HTTP 标头的值基于查看器或查看器请求的特征。这些标头提供了有关查看器的设备类型、IP 地址、地理位置、请求协议(HTTP 或 HTTPS)、HTTP 版本、TLS 连接详情、JA3 fingerprint 以及 JA4 指纹的信息。还可以将分配的缓存行为配置为转发 WebSocket 标头。有关更多信息,请参阅 将 WebSocket 与 CloudFront 分配结合使用

有了这些标头,您的源或 Edge 函数可以接收有关查看器的信息,而无需编写自己的代码来确定此信息。如果源根据这些标头中的信息返回不同的响应,您可以将它们包含在缓存键 中,以便 CloudFront 分别缓存这些响应。例如,源可能会根据查看器所在的国家/地区以特定语言回复内容,或回复根据特定设备类型量身定制的内容。源也可能会将这些标头写入日志文件,您可以使用这些标头来确定有关查看器所在位置、它们使用的设备类型等信息。

要将这些标头包含在缓存键中,请使用缓存策略。有关更多信息,请参阅使用策略来控制缓存键了解缓存键

要在源接收这些标头但不将其包含在缓存键中,请使用源请求策略。有关更多信息,请参阅 使用策略来控制源请求

设备类型标头

您可以添加以下标头来确定查看器的设备类型。根据 User-Agent 标头的值,CloudFront 将这些标头的值设置为 truefalse。如果某个设备归入多个类别中,则可能有多个值为 true。例如,对于一些平板电脑设备,CloudFront 会将 CloudFront-Is-Mobile-ViewerCloudFront-Is-Tablet-Viewer 都设置为 true

  • CloudFront-Is-Android-Viewer – 当 CloudFront 确定查看器是采用 Android 操作系统的设备时,设置为 true

  • CloudFront-Is-Desktop-Viewer – 当 CloudFront 确定查看器是桌面设备时,设置为 true

  • CloudFront-Is-IOS-Viewer – 当 CloudFront 确定查看器是带 Apple 操作系统(如 iPhone、iPod touch 和一些 iPad devices.的设备)时,设置为 true

  • CloudFront-Is-Mobile-Viewer – 当 CloudFront 确定查看器是移动设备时,设置为 true

  • CloudFront-Is-SmartTV-Viewer – 当 CloudFront 确定查看器是智能电视时,设置为 true

  • CloudFront-Is-Tablet-Viewer – 当 CloudFront 确定查看器是平板电脑时,设置为 true

查看器位置标头

您可以添加以下标头来确定查看器的位置。CloudFront 根据查看器的 IP 地址确定这些标头的值。对于这些标头值中的非 ASCII 字符,CloudFront 将根据 RFC 3986 的第 1.2 部分对字符进行百分比编码。

  • CloudFront-Viewer-Address – 包含查看器的 IP 地址和请求的源端口。例如,标头值 198.51.100.10:46532 表示查看器的 IP 地址是 198.51.100.10,请求源端口为 46532。

  • CloudFront-Viewer-ASN – 包含查看器的自治系统号 (ASN)。

    注意

    CloudFront-Viewer-AddressCloudFront-Viewer-ASN 可以添加到源请求策略中,但不能添加到缓存策略中。

  • CloudFront-Viewer-Country – 包含查看器所在国家/地区的双字母国家/地区代码。有关国家/地区代码的列表,请参阅 ISO 3166-1 alpha-2

  • CloudFront-Viewer-City – 包含查看器所在城市的名称。

当您添加以下标头时,CloudFront 会将其应用于 那些源自 AWS 网络的请求之外的所有请求:

  • CloudFront-Viewer-Country-Name – 包含查看器所在国家/地区的名称。

  • CloudFront-Viewer-Country-Region – 包含代表查看器所在区域的代码(最多三个字符)。区域是 ISO 3166-2 代码的第一级细分(最广泛或最不具体)。

  • CloudFront-Viewer-Country-Region-Name – 包含查看器所在区域的名称。区域是 ISO 3166-2 代码的第一级细分(最广泛或最不具体)。

  • CloudFront-Viewer-Latitude – 包含查看器的近似纬度。

  • CloudFront-Viewer-Longitude – 包含查看器的近似经度。

  • CloudFront-Viewer-Metro-Code – 包含查看器的都市代码。仅当查看器所在地区是美国时提供此项。

  • CloudFront-Viewer-Postal-Code – 包含查看器的邮政编码。

  • CloudFront-Viewer-Time-Zone 包含查看器的时区,采用 IANA 时区数据库格式(例如,America/Los_Angeles)。

注意

CloudFront-Viewer-CityCloudFront-Viewer-Metro-CodeCloudFront-Viewer-Postal-Code 可能并不适用于每个 IP 地址。某些 IP 地址无法以足够的特异性进行地理定位,而无法获取该信息。

用于确定查看器的标头结构的标头

您可以添加以下标头来帮助根据查看器发送的标头来识别查看器。例如,不同的浏览器可能会按特定顺序发送 HTTP 标头。如果 User-Agent 标头中指定的浏览器与该浏览器的预期标头顺序不匹配,您可以拒绝请求。此外,如果 CloudFront-Viewer-Header-Count 值与 CloudFront-Viewer-Header-Order 中的标头数量不匹配,您可以拒绝请求。

  • CloudFront-Viewer-Header-Order – 按请求的顺序包含查看器的标头名称(用冒号分隔)。例如:CloudFront-Viewer-Header-Order: Host:User-Agent:Accept:Accept-Encoding。超过 7680 字符限制的标头将被截断。

  • CloudFront-Viewer-Header-Count – 包含查看器标头的总数。

您可以添加以下标头来确定查看器的 JA3 指纹、JA4 指纹和 TLS 连接详细信息:

  • CloudFront-Viewer-JA3-Fingerprint – 包含查看器的 JA3 指纹。JA3 指纹可帮助您确定请求是来自已知客户端、恶意软件或恶意机器人还是预期的(允许列出的)应用程序。

  • CloudFront-Viewer-JA4-Fingerprint – 包含查看器的 JA4 指纹。与 JA3 指纹相似,JA4 指纹可帮助您确定请求是否来自已知客户端,是否为恶意软件或恶意机器人,或者是否为预期的(加入允许列表中的)应用程序。您可以使用指纹来构建一个包含已知善意和恶意行为者的数据库,以便在检查 HTTP 请求时使用。然后,您可以在应用程序 Web 服务器上或在 Lambda@EdgeCloudFront Functions 中检查标头值,将标头值与已知恶意软件指纹列表进行比较,从而阻止恶意客户端。

  • CloudFront-Viewer-TLS – 包含 SSL/TLS 版本、密码以及与查看器和 CloudFront 之间的连接使用的 SSL/TLS 握手相关的信息。标头值采用以下格式:

    SSL/TLS_version:cipher:handshake_information

    对于 handshake_information,标头可包含以下值:

    • fullHandshake – 对 SSL/TLS 会话执行了完全握手。

    • sessionResumed – 恢复了先前的 SSL/TLS 会话。

    • connectionReused – 重复使用了先前的 SSL/TLS 连接。

    下面是此标头的一些示例值:

    TLSv1.3:TLS_AES_128_GCM_SHA256:sessionResumed
    TLSv1.2:ECDHE-ECDSA-AES128-GCM-SHA256:connectionReused
    TLSv1.1:ECDHE-RSA-AES128-SHA256:fullHandshake
    TLSv1:ECDHE-RSA-AES256-SHA:fullHandshake

    有关可能包含在此标头值中的 SSL/TLS 版本和密码的完整列表,请参阅查看器和 CloudFront 之间支持的协议和密码

备注
  • JA3 和 JA4 指纹源自 SSL/TLS Client Hello 数据包。它们仅在 HTTPS 请求中存在。

  • 对于这些与 TLS 相关的标头,您可以将其添加到源请求策略中,但不能添加到缓存策略中。

其他 CloudFront 标头

您可以添加以下标头来确定查看器的原始请求 URI,原始请求查询字符串参数,以及值、协议和版本:

  • CloudFront-Error-Args – 包含从查看器收到的原始请求 URI。

  • CloudFront-Error-Uri – 包含原始请求查询字符串参数和值。

  • CloudFront-Forwarded-Proto – 包含查看器请求的协议(HTTP 或 HTTPS)。

  • CloudFront-Viewer-Http-Version – 包含查看器请求的 HTTP 版本。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。