Cloudflare 如何处理 HTTP 请求标头?

Cloudflare 作为反向代理运行,这就解释了它将如何处理 HTTP 标头,以及当流量通过 Cloudflare 时可能会更改或添加什么。

凭借这些添加的标头,Cloudflare 将所有 HTTP 标头从客户端原样传递到源站。

 
当信息从原始 Web 服务器传输到客户端时,Cloudflare 会删除包含点 (.) 的任何标头。例如,当通过 Cloudflare 代理请求时,标头 test.header:data 将被丢弃。

CF-IPCountry

此标头包含原始访问者的国家/地区代码。这是一个将具有国家/地区代码的双字符值,如果国家/地区代码未知,则其将为“XX”。通过在控制面板中启用 Cloudflare IP Geolocation,此标头被添加到请求中。

"Cf-Ipcountry:US"

CF-Connecting-IP

要为每个请求提供客户端(访问者)IP 地址,Cloudflare 添加了 CF-Connecting-IP 标头。

CF-Connecting-IPA.B.C.D"


其中 A.B.C.D 为客户端的 IP 地址,也称为原始访问者 IP 地址。

X-Forwarded-For

X-Forwarded-For 是代理(包括Cloudflare)使用的公认 HTTP 标头,用于传递请求中的其他 IP 地址。这通常与 CF-Connecting-IP 相同,但请求路径中可能有多层代理。

有两种可能的结果:

首先,如果发送到 Cloudflare 的请求中没有现有“X-Forwarded-For”标头,那么该标头将具有与 CF-Connecting-IP 标头相同的值,例如:

"X-Forwarded-For:A.B.C.D"

其中 A.B.C.D 为客户端的 IP 地址,也称为原始访问者 IP 地址。

其次,如果发送到 Cloudflare 的请求中存在“X-Forwarded-For”标头,则 Cloudflare 会将 HTTP 代理的 IP 地址附加到其值,作为列表中的最后一项。

"X-Forwarded-For:A.B.C.D[,X.X.X.X,Y.Y.Y.Y,]"

其中 A.B.C.D 为客户端的 IP 地址,也称为原始访问者 IP 地址。此示例中的 X.X.X.X 和 Y.Y.Y.Y 是标头值中路由的 IP 地址。

X-Forwarded-Proto

Cloudflare 还会附加一个 X-Forwarded-Proto 标头,其可以是 HTTP 或 HTTPS,具体取决于用户访问该站点所使用的协议,例如:

"X-Forwarded-Proto: https"

注意: 此标头仅在使用灵活 SSL 设置且访问者通过 HTTPS 向 Cloudflare 请求(Cloudflare 通过 HTTP 向源站请求)时才相关。在这种情况下,源站可以通过检查此标头来辨别访问者正在使用 HTTPS。

CF-RAY

CF-Ray 标头是具有该请求通过的数据中心的哈希。示例如下:

"Cf-Ray:230b030023ae2822-SJC"

您可以将 CF-Ray 标头添加到服务器日志,这可匹配您在 Cloudflare 上看到的请求与服务器日志中的请求。Enterprise 客户还可在Enterprise Log Share中查看通过 Cloudflare 发出的所有请求。


CF-Visitor

当前此标头是一个 JSON 对象,只包含一个名为“scheme”的键。其含义与以上 X-Forwarded-Proto 的含义相同 - 例如它将是 HTTP 或 HTTPS,并且其仅在您需要在 Cloudflare 设置中启用灵活 SSL 时才相关。

"Cf-Visitor: { \"scheme\":\"https\"}"

True-Client-IP  * 仅限 Enterprise 计划 *

要为每个请求提供客户端(访问者)IP 地址,Cloudflare 添加了 True-Client-IP 标头。

"True-Client-IP:A.B.C.D"

其中 A.B.C.D 为客户端的 IP 地址,也称为访问者 IP 地址。此请求标头仅适用于 Enterprise 计划。


除标头名称外,True-Client-IP 和 Cf-Connecting-IP 之间没有区别。一些拥有传统设备的大型 Enterprise 客户需要一个类似 True-Client-IP 的标头,以避免更新防火墙或负载均衡器来读取自定义标头名称,因此 Cloudflare 提供了这种标头,从而轻松实现向后兼容。

Not finding what you need?

95% of questions can be answered using the search tool. This is the quickest way to get a response.

由 Zendesk 提供技术支持