INTEGRITY Документация

HTTP-заголовки Cloudflare

Заголовки запроса

Cloudflare передает все заголовки HTTP-запроса на ваш исходный веб-сервер и добавляет дополнительные заголовки, указанные ниже.

Accept-Encoding

Для входящих запросов значение этого заголовка всегда устанавливается равным accept-encoding: br, gzip. Если клиент задал другое значение, например accept-encoding: deflate, оно будет перезаписано, а исходное значение останется доступным в request.cf.clientAcceptEncoding.

CF-Connecting-IP

CF-Connecting-IP передаёт исходному веб-серверу IP-адрес клиента, подключающегося к Cloudflare. Этот заголовок отправляется только с трафиком от периферийной сети Cloudflare к вашему исходному веб-серверу.

Инструкции по логированию исходного IP-адреса посетителя см. в Восстановление исходных IP-адресов посетителей.

В качестве альтернативы, если вы не хотите получать CF-Connecting-IP заголовок или любой HTTP-заголовок, который может содержать IP-адрес посетителя, включить Удаление заголовков IP-адреса посетителя Managed Transform.

CF-Connecting-IP в подзапросах Worker

При подзапросах Worker в пределах одной зоны значение CF-Connecting-IP отражает значение x-real-ip (IP-адрес клиента). x-real-ip может быть изменено пользователем в скрипте Worker.

При межзональных подзапросах (cross-zone subrequests) из одной зоны Cloudflare в другую, CF-Connecting-IP значение будет установлено равным IP-адресу клиента Worker '2a06:98c0:3600::103' из соображений безопасности.

Для подзапросов Worker к зоне, не принадлежащей клиенту Cloudflare, CF-Connecting-IP и x-real-ip заголовка будут отражать IP-адрес клиента, при этом только x-real-ip заголовок можно изменить.

Если подзапрос Worker не был инициирован, cf-connecting-ip отражает IP-адрес клиента и x-real-ip заголовок удаляется.

CF-Connecting-IPv6

Cloudflare предоставляет бесплатная поддержка IPv6 ко всем доменам, не требуя дополнительной настройки или оборудования. Чтобы поддержать переход на IPv6, в Cloudflare Pseudo IPv4 предоставляет сервис трансляции IPv6 в IPv4 для всех доменов Cloudflare.

Если Pseudo IPv4 имеет значение Overwrite Headers - Cloudflare перезаписывает существующий Cf-Connecting-IP и X-Forwarded-For заголовки псевдоадресом IPv4, сохраняя при этом настоящий адрес IPv6 в CF-Connecting-IPv6 заголовок.


CF-EW-Via

Этот заголовок используется для обнаружения циклов, аналогично CDN-Loop заголовок.

CF-Pseudo-IPv4

Если Pseudo IPv4 имеет значение Add Header - Cloudflare автоматически добавляет CF-Pseudo-IPv4 заголовок адресом IPv4 класса E, полученным хешированием исходного адреса IPv6.

True-Client-IP (только для плана Enterprise)

True-Client-IP передаёт исходному веб-серверу исходный IP-адрес клиента. True-Client-IP доступен только на плане Enterprise. В примере ниже 203.0.113.1 это исходный IP-адрес посетителя. Например: True-Client-IP: 203.0.113.1

Нет разницы между True-Client-IP и CF-Connecting-IP заголовки, помимо имени заголовка. Некоторым клиентам Enterprise с устаревшими устройствами требуется True-Client-IP чтобы не пришлось обновлять файрволы или балансировщики нагрузки для чтения имени пользовательского заголовка.

Чтобы добавить True-Client-IP HTTP-заголовок к запросам, включить Добавление заголовка «True-Client-IP» Managed Transform.

В качестве альтернативы, если вы не хотите получать True-Client-IP заголовок или любой HTTP-заголовок, который может содержать IP-адрес посетителя, включить Удаление заголовков IP-адреса посетителя Managed Transform.

X-Forwarded-For

X-Forwarded-For сохраняет адреса прокси-сервера и исходный IP-адрес посетителя. Если не было существующего X-Forwarded-Forзаголовок в запросе, отправленном в Cloudflare, X-Forwarded-For имеет значение, идентичное значению CF-Connecting-IP заголовок.

Например, если исходный IP-адрес посетителя равен 203.0.113.1 а запрос, отправленный в Cloudflare, не содержит X-Forwarded-For заголовок, то Cloudflare отправит X-Forwarded-For: 203.0.113.1 к источнику.

Если же X-Forwarded-For заголовок уже присутствовал в запросе к Cloudflare, Cloudflare добавит к заголовку IP-адрес HTTP-прокси, подключающегося к Cloudflare. Например, если исходный IP-адрес посетителя 203.0.113.1 и запрос проходит через два прокси: прокси A с IP-адресом 198.51.100.101 и прокси B с IP-адресом 198.51.100.102 до проксирования на Cloudflare, после чего Cloudflare отправит X-Forwarded-For: 203.0.113.1,198.51.100.101,198.51.100.102 к источнику. Прокси A добавит исходный IP-адрес посетителя (203.0.113.1) в X-Forwarded-For перед проксированием запроса на proxy B, который, в свою очередь, добавит IP-адрес Proxy A (198.51.100.101) в X-Forwarded-For перед проксированием запроса в Cloudflare. И наконец, Cloudflare добавит IP-адрес proxy B (198.51.100.102) в X-Forwarded-For перед проксированием запроса на origin-сервер.

Если вы не хотите получать IP-адрес посетителя (и IP-адреса других промежуточных прокси) в X-Forwarded-For заголовок, или любой HTTP-заголовок, который может содержать IP-адрес посетителя, включить Удаление заголовков IP-адреса посетителя Managed Transform. Для X-Forwarded-For заголовка, это Managed Transform удаляет IP-адрес посетителя из значения заголовка только тогда, когда Cloudflare получает запрос, проксированный как минимум еще через одну CDN. В этом случае Cloudflare сохранит только IP-адрес последнего прокси.

Возьмём предыдущий пример, где запрос дважды прошёл через прокси (прокси A и B), прежде чем попасть в Cloudflare, с Удаление заголовков IP-адреса посетителя включено, Cloudflare отправит X-Forwarded-For: 198.51.100.102 к источнику, сохраняя только IP-адрес прокси B (последнего прокси перед Cloudflare). См. IP-адрес посетителя в x-forwarded-for HTTP-заголовок для дополнительных сведений.

X-Forwarded-Proto

X-Forwarded-Proto используется для определения протокола (HTTP или HTTPS), который посетитель использовал для подключения к Cloudflare. По умолчанию используется протокол https, если посетитель не выбрал другой режим шифрования.

Для входящих запросов значение этого заголовка устанавливается равным протоколу, который использовал клиент (http или https). Если клиент указал другое значение, оно будет перезаписано.

Cf-Ray

Cf-Ray заголовок (также известный как Ray ID) представляет собой хешированное значение, которое кодирует сведения о дата-центре и запросе посетителя. Например: Cf-Ray: 230b030023ae2822-SJC.

Заголовок Cf-Ray определяет дата-центр, обрабатывающий запрос, когда отображается как заголовок ответа. Он представлен трёхбуквенным кодом, соответствующим местоположению дата-центра.

Заголовок Cf-Ray также передаётся вышестоящим источникам и может изменяться, отражая подключённый дата-центр. Это происходит, когда запрос проходит через Argo Smart Routing или Argo Tiered Caching. В таких случаях трёхбуквенный код в заголовке Cf-Ray будет указывать на дата-центр, подключающийся к источнику, а не на входной дата-центр.

Добавьте Cf-Ray заголовок в журналы вашего веб-сервера-источника чтобы сопоставить запросы, проксируемые через Cloudflare, с запросами в логах вашего сервера.

Enterprise-клиенты могут видеть все запросы через Cloudflare Logs, включая данные о входящем дата-центре.

CF-IPCountry

CF-IPCountry заголовок содержит двухбуквенный код страны, из которой пришел посетитель.

Помимо Коды ISO-3166-1 alpha-2, Cloudflare использует следующие специальные коды стран:

Чтобы добавить этот заголовок к запросам вместе с другими HTTP-заголовками, содержащими информацию о местоположении по IP-адресу посетителя, включить Добавление заголовков с местоположением посетителя Managed Transform.

CF-Visitor

В настоящее время этот заголовок представляет собой объект JSON, содержащий только один ключ с именем scheme. Значением заголовка будет HTTP или HTTPS, и это актуально только если вам нужно включить Flexible SSL в настройках Cloudflare. Например: CF-Visitor: { \"scheme\":\"https\"}.

CDN-Loop

CDN-Loop позволяет Cloudflare указать, сколько раз запрос может входить в сеть Cloudflare, прежде чем он будет заблокирован как зацикленный. Например: CDN-Loop: cloudflare.

CF-Connecting-O2O

Если SSL for SaaS используется для зона, принадлежащая SaaS-провайдеру, будет установлен HTTP-заголовок со значением cf-connecting-o2o: 1.

CF-Worker

CF-Worker заголовок запроса добавляется в подзапрос edge Worker и указывает узел, инициировавший подзапрос. Например: CF-Worker: example.com.

Вы можете добавить CF-Worker заголовок в журналах сервера аналогично тому, как вы добавляете CF-RAY заголовок. Для этого добавьте $http_cf_worker в файле формата журнала: log_format cf_custom "CF-Worker:$http_cf_worker"'

CF-Worker добавляется ко всем подзапросам Worker, отправленным через fetch(). Значением является имя зоны, которой принадлежит Worker, выполняющий вложенный запрос. Например, скрипт Worker на маршруте для foo.example.com/* от example.com все вложенные запросы будут содержать заголовок:

CF-Worker: example.com

Назначение этого заголовка: дать получателям (например, исходным серверам, балансировщикам нагрузки, другим Workers) возможность распознавать, фильтровать и маршрутизировать трафик, создаваемый Workers в определённых зонах.

Подключение

Для входящих запросов значение этого заголовка всегда устанавливается равным Keep-Alive. Если клиент задал другое значение, например close, оно будет перезаписано. Обратите внимание, что то же самое происходит, если клиент подключается по HTTP/2 или HTTP/3.

Особенности использования Spectrum

При использовании Spectrum с TCP-приложением эти заголовки не видны на исходном сервере, поскольку они являются HTTP-заголовками. Если вы хотите использовать их в своем приложении, есть два варианта:

Заголовки ответа

Cloudflare удалит некоторые HTTP-заголовки из ответа, отправляемого посетителю, и добавит некоторые заголовки HTTP, специфичные для Cloudflare.

Удаленные заголовки ответа

Cloudflare передает посетителю все HTTP-заголовки из ответа исходного сервера, за исключением следующих заголовков:

Добавленные заголовки ответа

Cloudflare добавляет HTTP-заголовки, указанные ниже, в ответ, отправляемый посетителю.

Cf-Ray

Cf-Ray значение, возвращаемое посетителю, будет тем же Cf-Ray значение, которое было отправлено на исходный сервер.

Cf-Cache-Status

Список всех возможных Cf-Cache-Status значений содержится в Кеширование ответов Cloudflare.