← Правила Cloudflare / rules / transform
Request Header Transform Rules
Используйте Request Header Transform Rules, чтобы изменять заголовки HTTP-запросов, отправляемых на исходный сервер (сервер, на котором размещены ваш сайт или приложение).
flowchart LR
accTitle: Header modifications diagram
accDescr: Header transform rules can change the headers sent to your origin server (request header modifications) or sent your your website visitors (response header modifications).
A[Visitor]
B((Cloudflare))
C[(Origin server)]
A -.-> B == "Includes request<br> header modifications" ==> C
C -.-> B -. "Includes response<br> header modifications" .-> A
style A stroke-width: 2px
style B stroke: orange,fill: orange,color: black
linkStyle 0,2,3 stroke-width: 1px
linkStyle 1 stroke-width: 3px
Чтобы изменить заголовки HTTP в ответ отправляется посетителям сайта, см. Response Header Transform Rules.
С помощью Request Header Transform Rules можно:
- Задаёт значение заголовка HTTP-запроса как буквальную строку, перезаписывая предыдущее значение или добавляя новый заголовок к запросу.
- Задаёт значение заголовка HTTP-запроса на основе выражения (формулы, которая вычисляет значение на основе свойств запроса), перезаписывая предыдущее значение или добавляя новый заголовок к запросу.
- Удаляет HTTP-заголовок из запроса.
Правило преобразования заголовка запроса можно создать в панели управления, через API, или с помощью Terraform.
Для более сложных изменений заголовков запроса используйте Snippets.
Важные примечания
-
Нельзя изменять или удалять заголовки запроса HTTP, имя которых начинается с
x-cf-илиcf-кромеcf-connecting-ipHTTP-заголовок запроса, который можно удалить. -
По причинам соответствия протоколу изменение или удаление заголовков запроса с запрещённые имена заголовков ↗ (например,
Accept-Encoding) обычно не допускается в Request Header Transform Rules. -
Нельзя изменять значение заголовков, которые обычно используются для определения IP-адреса посетителя сайта или исходного протокола, например
x-forwarded-for,true-client-ip,x-real-ip, илиx-forwarded-proto. Если вашему источнику требуется пользовательское значение в заголовке, напримерx-real-ipдля запросов, достигающих вашего исходного сервера, используйте Cloudflare Snippets или Cloudflare Workers и задайте заголовок дляfetch()подзапрос. Значение должно быть синтаксически корректным IP-адресом. Этот способ не работает для межзоновых подзапросов, где Cloudflare безусловно заменяет значение на внутренний адрес Cloudflare, чтобы предотвратить подмену IP-адреса. -
Хотя вы можете удалить
x-forwarded-forзаголовок в Request Header Transform Rule, серверный прокси Cloudflare добавляет его заново (с IP адресом посетителя) до того, как запрос достигнет вашего источника, поскольку прокси работает после всех фаз обработки правил. То же самое относится к Managed Transforms. Однако, если запрос обрабатывается Cloudflare Workers, который выполняется до обращения к кэшуx-forwarded-forзаголовок запроса будет отсутствовать, поскольку прокси ещё не добавил его повторно. -
Нельзя задать или изменить значение
cookieHTTP-заголовки запроса, но эти заголовки можно удалить. При настройке правила, которое удаляетcookieHTTP-заголовок запроса приведёт к удалению всехcookieзаголовки в соответствующих запросах. -
Если вы измените значение существующего заголовка HTTP-запроса с помощью выражения, результатом которого является пустая строка (
"") или неопределённое значение, HTTP-заголовок запроса будет удалён. -
Операция удаления заголовка HTTP-запроса удаляет все заголовки запроса с указанным именем.
-
В настоящее время существует ограниченное количество заголовков HTTP-запросов, которые нельзя изменить. Cloudflare может снять эти ограничения для некоторых из таких заголовков при наличии обоснованных сценариев использования. Создайте публикацию в сообществе ↗ для рассмотрения.
-
Чтобы использовать утверждения внутри JSON Web Token (JWT), вам сначала нужно настроить конфигурацию проверки токенов в API Shield.
-
Правила преобразования заголовков запроса выполняются по порядку, и более поздние правила могут перезаписывать изменения, внесённые предыдущими правилами.
-
Значения полей запроса и ответа неизменны в пределах каждого фаза, например
http_request_late_transformфаза, в которой определяются правила преобразования заголовков запроса. Это означает, что более поздние правила преобразования заголовков запроса при вычислении своих выражений фильтра будут по-прежнему использовать исходные значения полей, а не значения, изменённые предыдущими правилами. См. Значения полей при оценке правила, где это описано подробнее.
Порядок выполнения
Порядок выполнения функций Rules следующий:
- Single Redirects
- URL Rewrite Rules
- Configuration Rules
- Origin Rules
- Bulk Redirects
- Managed Transforms
- Request Header Transform Rules
- Cache Rules
- Snippets
- Cloud Connector
Перечисленные выше типы правил имеют приоритет над Page Rules. Это означает, что Page Rules будут переопределены, если совпадение найдено одновременно для Page Rules и для продуктов Rules, перечисленных выше.
Как правило, для нетерминирующие действия последнее изменение, внесённое правилами в той же фаза будет иметь приоритет (более поздние правила могут перезаписывать изменения, внесённые предыдущими правилами). Однако для завершающих действий (Block, Перенаправление, или одно из действий проверки), обработка правил остановится, и действие будет выполнено немедленно.
Например, если несколько правил с Перенаправление совпадение действия, Cloudflare всегда будет использовать URL redirect первого совпавшего правила. Кроме того, если вы настраиваете URL redirect с помощью разных продуктов Cloudflare (Single Redirects и Bulk Redirects), применяется продукт, который выполняется первым при совпадении правила (в данном случае Single Redirects).
См. Список фаз с порядком выполнения продуктов.
Устранение неполадок
При устранении неполадок с Request Header Transform Rules используйте Cloudflare Trace чтобы определить, срабатывает ли правило для конкретного URL.