Rulesets API を使って、API から Response Header Transform Rules を作成します。よくある用途は Rules の例ギャラリー を参照してください。
Terraform を使う場合は Terraform で Transform Rules を設定する を参照してください。
API でレスポンスヘッダー変換ルールを作成するときは、次を確認してください。
- ルールアクションを
rewriteに設定する。 - 実行する操作(ヘッダーの set、add、remove)に応じて、
action_parametersフィールドに ヘッダー変更パラメーター を定義する。 - ゾーンレベルで、ルールを
http_response_headers_transformフェーズにデプロイする。
API を使って、指定したゾーンに a response header transform rule を作成するには、次のワークフローに従います。
-
ゾーンルールセットを一覧する 操作を使い、ゾーンレベルで
http_response_headers_transformフェーズのルールセットがすでにあるかを確認します。 -
フェーズのルールセットが存在しない場合は、ゾーンルールセットを作成する 操作で作成します。新しいルールセットのプロパティには、次の値を設定します。
- kind:
zone - phase:
http_response_headers_transform
- kind:
-
ゾーンルールセットを更新する 操作を使い、ルールセットのルール一覧に a response header transform rule を追加します。または、前のステップで説明した ゾーンルールセットを作成する リクエストにルールを含めます。
API 操作を行うには、API トークンに 必要な権限 があることを確認してください。
例: HTTP レスポンスヘッダーを静的な値に設定する
次の例は、ゾーンルールセットを更新する 操作を使い、既存のフェーズルールセット($RULESET_ID)のルールを、HTTP レスポンスヘッダーを静的な値に設定するレスポンスヘッダー変換ルール 1 件に設定します。レスポンスには、更新したルールセットの完全な定義が含まれます。
Required API token permissions
At least one of the following token permissions is required: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": []
}Terraform を使う場合、更新をまたいでルール ID を安定させるには ref フィールドを使います。このフィールドを追加すると、変更時に Terraform がルールを再作成するのを防げます。詳細は Terraform ドキュメントの トラブルシューティング を参照してください。
例: HTTP レスポンスヘッダーを動的な値に設定する
次の例は、ゾーンルールセットを更新する 操作を使い、既存のフェーズルールセット($RULESET_ID)のルールを、HTTP レスポンスヘッダーを動的な値に設定するレスポンスヘッダー変換ルール 1 件に設定します。レスポンスには、更新したルールセットの完全な定義が含まれます。
Required API token permissions
At least one of the following token permissions is required: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": []
}Terraform を使う場合、更新をまたいでルール ID を安定させるには ref フィールドを使います。このフィールドを追加すると、変更時に Terraform がルールを再作成するのを防げます。詳細は Terraform ドキュメントの トラブルシューティング を参照してください。
例: 静的な値の set-cookie HTTP レスポンスヘッダーを追加する
set-cookie HTTP レスポンスヘッダーを追加する次の例は、ゾーンルールセットを更新する 操作を使い、既存のフェーズルールセット($RULESET_ID)のルールを、静的な値の set-cookie HTTP レスポンスヘッダーを追加するレスポンスヘッダー変換ルール 1 件に設定します。add 操作でルールを設定すると、レスポンスにすでに存在する set-cookie ヘッダーはそのまま残ります。レスポンスには、更新したルールセットの完全な定義が含まれます。
Required API token permissions
At least one of the following token permissions is required: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": []
}Terraform を使う場合、更新をまたいでルール ID を安定させるには ref フィールドを使います。このフィールドを追加すると、変更時に Terraform がルールを再作成するのを防げます。詳細は Terraform ドキュメントの トラブルシューティング を参照してください。
例: HTTP レスポンスヘッダーを削除する
次の例は、ゾーンルールセットを更新する 操作を使い、既存のフェーズルールセット($RULESET_ID)のルールを、HTTP レスポンスヘッダーを削除するレスポンスヘッダー変換ルール 1 件に設定します。レスポンスには、更新したルールセットの完全な定義が含まれます。
Required API token permissions
At least one of the following token permissions is required: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": []
}Terraform を使う場合、更新をまたいでルール ID を安定させるには ref フィールドを使います。このフィールドを追加すると、変更時に Terraform がルールを再作成するのを防げます。詳細は Terraform ドキュメントの トラブルシューティング を参照してください。
Response Header Transform Rules を管理する API リクエストで使う API トークンには、少なくとも次の権限が必要です。
- Transform Rules > Edit
- Account Rulesets > Read