← Правила Cloudflare / rules / transform / response-header-modification
Создайте правило преобразования заголовков ответа через API
Используйте Rulesets API для создания Response Header Transform Rules через API. См. Галерея примеров правил типичные случаи использования.
Если вы используете Terraform, см. Настройка Transform Rules с помощью Terraform.
Базовые настройки правила
При создании правила преобразования заголовков ответа через API убедитесь, что вы:
- Задайте для действия правила значение
rewrite. - Определите параметры изменения заголовков в
action_parametersполе в соответствии с выполняемой операцией (задать, добавить или удалить заголовок). - Разверните правило в
http_response_headers_transformфаза на уровне зоны.
Процедура
Чтобы создать правило преобразования заголовков ответа для указанной зоны через API, выполните следующие действия:
-
Используйте Список наборов правил зоны операцию, чтобы проверить, существует ли уже набор правил для
http_response_headers_transformфаза на уровне зоны. -
Если набор правил для этой фазы не существует, создайте его с помощью Создание набора правил зоны операцию. В свойствах нового набора правил задайте следующие значения:
- тип:
zone - фаза:
http_response_headers_transform
- тип:
-
Используйте Обновление набора правил зоны операцию, чтобы добавить правило преобразования заголовков ответа в список правил набора правил. Либо включите правило в Создание набора правил зоны запрос, упомянутый на предыдущем шаге.
Убедитесь, что ваш API токен имеет необходимые разрешения для выполнения операций API.
Примеры запросов
Пример: установка статического значения заголовка HTTP-ответа
Следующий пример настраивает правила существующего ruleset фазы ($RULESET_ID) в единое правило преобразования заголовков ответа, устанавливающее HTTP-заголовок ответа в статическое значение, с использованием Обновление набора правил зоны операцию. Ответ будет содержать полное определение обновлённого набора правил.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "set_resp_header_source",
"expression": "(starts_with(http.request.uri.path, \"/en/\"))",
"description": "My first response header transform rule",
"action": "rewrite",
"action_parameters": {
"headers": {
"X-Source": {
"operation": "set",
"value": "Cloudflare"
}
}
}
}
]
}'{
"result": {
"id": "<RULESET_ID>",
"name": "Zone-level Response Headers Transform Ruleset",
"description": "Zone-level ruleset that will execute Response Header Transform Rules.",
"kind": "zone",
"version": "2",
"rules": [
{
"ref": "set_resp_header_source",
"id": "<RULE_ID>",
"version": "1",
"action": "rewrite",
"action_parameters": {
"headers": {
"X-Source": {
"operation": "set",
"value": "Cloudflare"
}
}
},
"expression": "(starts_with(http.request.uri.path, \"/en/\"))",
"description": "My first response header transform rule",
"last_updated": "2021-04-14T14:42:04.219025Z",
"ref": "<RULE_REF>"
}
],
"last_updated": "2021-04-14T14:42:04.219025Z",
"phase": "http_response_headers_transform"
},
"success": true,
"errors": [],
"messages": []
}Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Пример: установка динамического значения заголовка HTTP-ответа
Следующий пример настраивает правила существующего ruleset фазы ($RULESET_ID) в единое правило преобразования заголовков ответа, устанавливающее HTTP-заголовок ответа в динамическое значение, с использованием Обновление набора правил зоны операцию. Ответ будет содержать полное определение обновлённого набора правил.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "set_resp_header_bot_score",
"expression": "(starts_with(http.request.uri.path, \"/en/\"))",
"description": "My first response header transform rule",
"action": "rewrite",
"action_parameters": {
"headers": {
"X-Bot-Score": {
"operation": "set",
"expression": "to_string(cf.bot_management.score)"
}
}
}
}
]
}'{
"result": {
"id": "<RULESET_ID>",
"name": "Zone-level Response Headers Transform Ruleset",
"description": "Zone-level ruleset that will execute Response Header Transform Rules.",
"kind": "zone",
"version": "2",
"rules": [
{
"ref": "set_resp_header_bot_score",
"id": "<RULE_ID>",
"version": "1",
"action": "rewrite",
"action_parameters": {
"headers": {
"X-Bot-Score": {
"operation": "set",
"expression": "to_string(cf.bot_management.score)"
}
}
},
"expression": "(starts_with(http.request.uri.path, \"/en/\"))",
"description": "My first response header transform rule",
"last_updated": "2021-04-14T14:42:04.219025Z",
"ref": "<RULE_REF>"
}
],
"last_updated": "2021-04-14T14:42:04.219025Z",
"phase": "http_response_headers_transform"
},
"success": true,
"errors": [],
"messages": []
}Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Пример: добавление set-cookie HTTP-заголовок ответа в статическое значение
set-cookie HTTP-заголовок ответа в статическое значениеСледующий пример настраивает правила существующего ruleset фазы ($RULESET_ID) в единое правило преобразования заголовков ответа, добавляющее set-cookie HTTP-заголовок ответа в статическое значение, используя Обновление набора правил зоны операцию. Настроив правило с помощью add операции вы сохраните все существующие set-cookie заголовки, которые могут уже присутствовать в ответе. Ответ будет содержать полное определение набора правил, который вы обновили.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "add_resp_header_set_mycookie",
"expression": "(starts_with(http.request.uri.path, \"/en/\"))",
"description": "My first response header transform rule",
"action": "rewrite",
"action_parameters": {
"headers": {
"set-cookie": {
"operation": "add",
"value": "mycookie=custom_value"
}
}
}
}
]
}'{
"result": {
"id": "<RULESET_ID>",
"name": "Zone-level Response Headers Transform Ruleset",
"description": "Zone-level ruleset that will execute Response Header Transform Rules.",
"kind": "zone",
"version": "2",
"rules": [
{
"ref": "add_resp_header_set_mycookie",
"id": "<RULE_ID>",
"version": "1",
"action": "rewrite",
"action_parameters": {
"headers": {
"set-cookie": {
"operation": "add",
"value": "mycookie=custom_value"
}
}
},
"expression": "(starts_with(http.request.uri.path, \"/en/\"))",
"description": "My first response header transform rule",
"last_updated": "2021-04-14T14:42:04.219025Z",
"ref": "<RULE_REF>"
}
],
"last_updated": "2021-04-14T14:42:04.219025Z",
"phase": "http_response_headers_transform"
},
"success": true,
"errors": [],
"messages": []
}Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Пример: удаление заголовка HTTP-ответа
Следующий пример задаёт правила существующего ruleset фазы ($RULESET_ID) в единое правило преобразования заголовков ответа, удаляющее HTTP-заголовок ответа, с использованием Обновление набора правил зоны операцию. Ответ будет содержать полное определение обновлённого набора правил.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"ref": "remove_resp_header_cf_connecting_ip",
"expression": "(starts_with(http.request.uri.path, \"/en/\"))",
"description": "My first response header transform rule",
"action": "rewrite",
"action_parameters": {
"headers": {
"cf-connecting-ip": {
"operation": "remove"
}
}
}
}
]
}'{
"result": {
"id": "<RULESET_ID>",
"name": "Zone-level Response Headers Transform Ruleset",
"description": "Zone-level ruleset that will execute Response Header Transform Rules.",
"kind": "zone",
"version": "2",
"rules": [
{
"ref": "remove_resp_header_cf_connecting_ip",
"id": "<RULE_ID>",
"version": "1",
"action": "rewrite",
"action_parameters": {
"headers": {
"cf-connecting-ip": {
"operation": "remove"
}
}
},
"expression": "(starts_with(http.request.uri.path, \"/en/\"))",
"description": "My first response header transform rule",
"last_updated": "2021-04-14T14:42:04.219025Z",
"ref": "<RULE_REF>"
}
],
"last_updated": "2021-04-14T14:42:04.219025Z",
"phase": "http_response_headers_transform"
},
"success": true,
"errors": [],
"messages": []
}Используйте ref поле, чтобы идентификаторы правил оставались стабильными при обновлениях в Terraform. Добавление этого поля не позволяет Terraform пересоздавать правило при изменениях. Дополнительную информацию см. в Устранение неполадок в документации Terraform.
Необходимые разрешения API-токена
Токен API, используемый в запросах API для управления Response Header Transform Rules, должен иметь как минимум следующие разрешения:
- Transform Rules > Изменить
- Account Rulesets > Чтение