Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

API でレスポンスヘッダー変換ルールを作成する

最終更新 Markdown で表示Agent セットアップ

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 を作成するには、次のワークフローに従います。

  1. ゾーンルールセットを一覧する 操作を使い、ゾーンレベルで http_response_headers_transform フェーズのルールセットがすでにあるかを確認します。

  2. フェーズのルールセットが存在しない場合は、ゾーンルールセットを作成する 操作で作成します。新しいルールセットのプロパティには、次の値を設定します。

    • kind: zone
    • phase: http_response_headers_transform
  3. ゾーンルールセットを更新する 操作を使い、ルールセットのルール一覧に 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 Write
  • Config Settings Write
  • Dynamic URL Redirects Write
  • Cache Settings Write
  • Custom Errors Write
  • Origin Write
  • Managed headers Write
  • Zone Transform Rules Write
  • Mass URL Redirects Write
  • Magic Firewall Write
  • L4 DDoS Managed Ruleset Write
  • HTTP DDoS Managed Ruleset Write
  • Sanitize Write
  • Transform Rules Write
  • Select Configuration Write
  • Bot Management Write
  • Zone WAF Write
  • Account WAF Write
  • Account Rulesets Write
  • Logs Write
  • Logs Write
Update a zone rulesetbash
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 Write
  • Config Settings Write
  • Dynamic URL Redirects Write
  • Cache Settings Write
  • Custom Errors Write
  • Origin Write
  • Managed headers Write
  • Zone Transform Rules Write
  • Mass URL Redirects Write
  • Magic Firewall Write
  • L4 DDoS Managed Ruleset Write
  • HTTP DDoS Managed Ruleset Write
  • Sanitize Write
  • Transform Rules Write
  • Select Configuration Write
  • Bot Management Write
  • Zone WAF Write
  • Account WAF Write
  • Account Rulesets Write
  • Logs Write
  • Logs Write
Update a zone rulesetbash
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 レスポンスヘッダーを追加する

次の例は、ゾーンルールセットを更新する 操作を使い、既存のフェーズルールセット($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 Write
  • Config Settings Write
  • Dynamic URL Redirects Write
  • Cache Settings Write
  • Custom Errors Write
  • Origin Write
  • Managed headers Write
  • Zone Transform Rules Write
  • Mass URL Redirects Write
  • Magic Firewall Write
  • L4 DDoS Managed Ruleset Write
  • HTTP DDoS Managed Ruleset Write
  • Sanitize Write
  • Transform Rules Write
  • Select Configuration Write
  • Bot Management Write
  • Zone WAF Write
  • Account WAF Write
  • Account Rulesets Write
  • Logs Write
  • Logs Write
Update a zone rulesetbash
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 Write
  • Config Settings Write
  • Dynamic URL Redirects Write
  • Cache Settings Write
  • Custom Errors Write
  • Origin Write
  • Managed headers Write
  • Zone Transform Rules Write
  • Mass URL Redirects Write
  • Magic Firewall Write
  • L4 DDoS Managed Ruleset Write
  • HTTP DDoS Managed Ruleset Write
  • Sanitize Write
  • Transform Rules Write
  • Select Configuration Write
  • Bot Management Write
  • Zone WAF Write
  • Account WAF Write
  • Account Rulesets Write
  • Logs Write
  • Logs Write
Update a zone rulesetbash
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 ドキュメントの トラブルシューティング を参照してください。


必要な API トークン権限

Response Header Transform Rules を管理する API リクエストで使う API トークンには、少なくとも次の権限が必要です。

  • Transform Rules > Edit
  • Account Rulesets > Read

役に立ちましたか?