跳转到内容
搜索文档

Cloudflare HTTP 标头

最后更新 查看 MarkdownAgent 设置

请求标头

Cloudflare 将所有 HTTP 请求标头传递给源 Web 服务器,并添加以下指定的额外标头。

Accept-Encoding

对于传入请求,此标头的值将始终设置为 accept-encoding: br, gzip。如果客户端设置了不同的值(例如 accept-encoding: deflate),它将被覆盖,原始值可在 request.cf.clientAcceptEncoding 中获取。

CF-Connecting-IP

CF-Connecting-IP 向源 Web 服务器提供连接到 Cloudflare 的客户端 IP 地址。 此标头仅在从 Cloudflare 边缘到源 Web 服务器的流量上发送。

有关记录访客原始 IP 地址的指南,请参阅恢复原始访客 IP

或者,如果您不希望接收 CF-Connecting-IP 标头或任何可能包含访客 IP 地址的 HTTP 标头,请启用 Remove visitor IP headers(移除访客 IP 标头) Managed Transform

Worker 子请求中的 CF-Connecting-IP

在同 zone Worker 子请求中,CF-Connecting-IP 的值反映 x-real-ip 的值(客户端 IP)。x-real-ip 可由用户在 Worker 脚本中更改。

从一个 Cloudflare zone 到另一个 Cloudflare zone 的跨 zone 子请求中,出于安全原因,CF-Connecting-IP 值将设置为 Worker 客户端 IP 地址 '2a06:98c0:3600::103'

对于发往非 Cloudflare 客户 zone 的 Worker 子请求,CF-Connecting-IPx-real-ip 标头都将反映客户端 IP 地址,只有 x-real-ip 标头可以被更改。

未触发 Worker 子请求时,cf-connecting-ip 反映客户端 IP 地址,x-real-ip 标头被剥离。

CF-Connecting-IPv6

Cloudflare 为所有域名提供免费 IPv6 支持,无需额外配置或硬件。为支持向 IPv6 迁移,Cloudflare 的 Pseudo IPv4 为所有 Cloudflare 域名提供 IPv6 到 IPv4 的转换服务。

如果 Pseudo IPv4 设置为 Overwrite Headers,Cloudflare 会用伪 IPv4 地址覆盖现有的 Cf-Connecting-IPX-Forwarded-For 标头,同时将真实 IPv6 地址保留在 CF-Connecting-IPv6 标头中。


CF-EW-Via

此标头用于环路检测,类似于 CDN-Loop 标头

CF-Pseudo-IPv4

如果 Pseudo IPv4 设置为 Add Header,Cloudflare 会自动添加 CF-Pseudo-IPv4 标头,其中包含从原始 IPv6 地址哈希的 Class E IPv4 地址。

True-Client-IP(仅 Enterprise 计划)

True-Client-IP 向源 Web 服务器提供原始客户端 IP 地址。True-Client-IP 仅在 Enterprise 计划中可用。在以下示例中,203.0.113.1 是原始访客 IP 地址。例如:True-Client-IP: 203.0.113.1

True-Client-IPCF-Connecting-IP 标头之间除了标头名称外没有区别。一些拥有旧版设备的 Enterprise 客户需要 True-Client-IP 以避免更新防火墙或负载均衡器以读取自定义标头名称。

要添加 True-Client-IP HTTP 标头到请求,请启用 Add "True-Client-IP" header(添加 "True-Client-IP" 标头) Managed Transform

或者,如果您不希望接收 True-Client-IP 标头或任何可能包含访客 IP 地址的 HTTP 标头,请启用 Remove visitor IP headers(移除访客 IP 标头) Managed Transform

X-Forwarded-For

X-Forwarded-For 维护代理服务器和原始访客 IP 地址。如果发送到 Cloudflare 的请求中没有现有的 X-Forwarded-For 标头,X-Forwarded-For 的值与 CF-Connecting-IP 标头相同。

例如,如果原始访客 IP 地址是 203.0.113.1,且发送到 Cloudflare 的请求不包含 X-Forwarded-For 标头,则 Cloudflare 将向源站发送 X-Forwarded-For: 203.0.113.1

另一方面,如果发送到 Cloudflare 的请求中已存在 X-Forwarded-For 标头,Cloudflare 会将连接到 Cloudflare 的 HTTP 代理 IP 地址追加到标头。例如,如果原始访客 IP 地址是 203.0.113.1,请求在代理到 Cloudflare 之前经过两个代理:IP 地址为 198.51.100.101 的代理 A 和 IP 地址为 198.51.100.102 的代理 B,则 Cloudflare 将向源站发送 X-Forwarded-For: 203.0.113.1,198.51.100.101,198.51.100.102。代理 A 在将请求代理到代理 B 之前,会将原始访客的 IP 地址(203.0.113.1)追加到 X-Forwarded-For;代理 B 在将请求代理到 Cloudflare 之前,会将代理 A 的 IP 地址(198.51.100.101)追加到 X-Forwarded-For;最后,Cloudflare 在将请求代理到源站之前,会将代理 B 的 IP 地址(198.51.100.102)追加到 X-Forwarded-For

如果您不希望接收 X-Forwarded-For 标头中的访客 IP 地址(及其他中间代理 IP 地址),或任何可能包含访客 IP 地址的 HTTP 标头,请启用 Remove visitor IP headers(移除访客 IP 标头) Managed Transform。具体针对 X-Forwarded-For 标头,当 Cloudflare 收到至少经过另一个 CDN 代理的请求时,此 Managed Transform 只会从标头值中移除访客 IP。在这种情况下,Cloudflare 只会保留最后一个代理的 IP 地址。

使用上述示例,请求经过两次代理(代理 A 和 B)后通过 Cloudflare 代理,启用 Remove visitor IP headers(移除访客 IP 标头) 后,Cloudflare 将向源站发送 X-Forwarded-For: 198.51.100.102,仅保留代理 B 的 IP 地址(Cloudflare 之前的最后一个代理)。有关更多详情,请参阅 x-forwarded-for HTTP 标头中的访客 IP 地址

X-Forwarded-Proto

X-Forwarded-Proto 用于识别访客用于连接 Cloudflare 的协议(HTTP 或 HTTPS)。默认情况下,使用的协议是 https,除非访客选择了不同的加密模式

对于传入请求,此标头的值将设置为客户端使用的协议(httphttps)。如果客户端设置了不同的值,它将被覆盖。

Cf-Ray

Cf-Ray 标头(也称为 Ray ID)是一个哈希值,编码有关数据中心和访客请求的信息。例如:Cf-Ray: 230b030023ae2822-SJC

Cf-Ray 标头作为响应标头显示时,标识处理请求的数据中心。这由对应数据中心位置的三字母代码表示。

Cf-Ray 标头也会发送到上游源站,并可能修改以反映连接的数据中心。当请求通过 Argo Smart RoutingArgo Tiered Caching 路由时会发生这种情况。在这种情况下,Cf-Ray 标头中的三字母代码将指示连接源站的数据中心,而非入口数据中心。

Cf-Ray 标头添加到源 Web 服务器日志,以匹配代理到 Cloudflare 的请求与服务器日志中的请求。

Enterprise 客户可以通过 Cloudflare Logs 查看所有请求,包括与入口数据中心相关的数据。

CF-IPCountry

CF-IPCountry 标头包含来源访客国家的两字符国家/地区代码。

ISO-3166-1 alpha-2 代码外,Cloudflare 使用以下特殊国家/地区代码:

  • XX - 用于没有国家/地区代码数据的客户端。
  • T1 - 用于使用 Tor 网络的客户端。

要添加此标头到请求,以及访客 IP 地址位置信息的其他 HTTP 标头,请启用 Add visitor location headers(添加访客位置标头) Managed Transform

CF-Visitor

目前,此标头是 JSON 对象,仅包含一个名为 scheme 的键。标头将是 HTTP 或 HTTPS,仅当您需要在 Cloudflare 设置中启用 Flexible SSL 时才相关。例如:CF-Visitor: { \"scheme\":\"https\"}

CDN-Loop

CDN-Loop 允许 Cloudflare 指定请求在进入 Cloudflare 网络多少次后被阻止为环路请求。例如:CDN-Loop: cloudflare

CF-Connecting-O2O

如果 SSL for SaaS 用于 SaaS 提供商拥有的 zone,HTTP 标头将设置为 cf-connecting-o2o: 1

CF-Worker

CF-Worker 请求标头添加到标识生成子请求的主机的边缘 Worker 子请求。例如:CF-Worker: example.com

您可以在服务器日志中添加 CF-Worker 标头,类似于添加 CF-RAY 标头。为此,在日志格式文件中添加 $http_cf_workerlog_format cf_custom "CF-Worker:$http_cf_worker"'

CF-Worker 添加到通过 fetch() 发送的所有 Worker 子请求。它设置为拥有发起子请求的 Worker 的 zone 名称。例如,example.com 上路由 foo.example.com/* 的 Worker 脚本的所有子请求将具有标头:

CF-Worker: example.com

此标头的预期用途是为接收方(例如源站、负载均衡器、其他 Worker)提供一种识别、过滤和路由特定 zone 上 Worker 生成流量的手段。

Connection

对于传入请求,此标头的值将始终设置为 Keep-Alive。如果客户端设置了不同的值(例如 close),它将被覆盖。请注意,当客户端使用 HTTP/2 或 HTTP/3 连接时也是如此。

Spectrum 注意事项

将 Spectrum 与 TCP 应用配合使用时,这些标头在源站不可见,因为它们是 HTTP 标头。如果您希望在应用中使用这些标头,有两个选项:

响应标头

Cloudflare 会从返回给访客的响应中移除某些 HTTP 标头,并添加一些 Cloudflare 特定的 HTTP 标头。

移除的响应标头

Cloudflare 将源服务器响应中的所有 HTTP 标头传递回访客,以下标头除外:

  • X-Accel-Buffering
  • X-Accel-Charset
  • X-Accel-Limit-Rate
  • X-Accel-Redirect
  • Alt-Svc

添加的响应标头

Cloudflare 向发送给访客的响应添加以下 HTTP 标头。

Cf-Ray

返回给访客的 Cf-Ray 值将与发送到源服务器的 Cf-Ray 值相同。

Cf-Cache-Status

所有可能的 Cf-Cache-Status 值列表包含在 Cloudflare 缓存响应中。

这篇文档对您有帮助吗?