APIを介してルールを作成する
Rulesets APIを使用して、APIを介してHTTPリクエストヘッダー修正ルールを作成します。一般的なユースケースについては、ルール例ギャラリーを参照してください。
APIを介してHTTPリクエストヘッダー修正ルールを作成する際は、次のことを確認してください。
- ルールアクションを
rewriteに設定します。 - 実行する操作(ヘッダーの設定または削除)に応じて、
action_parametersフィールドにヘッダー修正パラメータを定義します。 - ルールをゾーンレベルの
http_request_late_transformフェーズにデプロイします。
Follow this workflow to create HTTPリクエストヘッダー修正ルール for a given zone via API:
-
Use the List zone rulesets operation to check if there is already a ruleset for the
http_request_late_transformphase at the zone level. -
If the phase ruleset does not exist, create it using the Create a zone ruleset operation. In the new ruleset properties, set the following values:
- kind:
zone - phase:
http_request_late_transform
- kind:
-
Use the Update a zone ruleset operation to add HTTPリクエストヘッダー修正ルール to the list of ruleset rules. Alternatively, include the rule in the Create a zone ruleset request mentioned in the previous step.
API操作を実行するために、APIトークンに必要な権限があることを確認してください。
例: 静的値を持つHTTPリクエストヘッダーを追加する
次の例では、既存のフェーズルールセット({ruleset_id})のルールを、静的値を持つHTTPリクエストヘッダーを追加する単一のHTTPリクエストヘッダー修正ルールに設定します。これは、ゾーンルールセットの更新操作を使用しています。
curl --request PUT \https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "expression": "(starts_with(http.request.uri.path, \"/en/\"))", "description": "私の最初のHTTPリクエストヘッダー修正ルール", "action": "rewrite", "action_parameters": { "headers": { "X-Source": { "operation": "set", "value": "Cloudflare" } } } } ]}'レスポンスには、更新したルールセットの完全な定義が含まれています。
{ "result": { "id": "<RULESET_ID>", "name": "ゾーンレベルのレイトトランスフォームルールセット", "description": "レイトトランスフォームルールを実行するゾーンレベルのルールセット。", "kind": "zone", "version": "2", "rules": [ { "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": "私の最初のHTTPリクエストヘッダー修正ルール", "last_updated": "2021-04-14T14:42:04.219025Z", "ref": "<RULE_REF>" } ], "last_updated": "2021-04-14T14:42:04.219025Z", "phase": "http_request_late_transform" }, "success": true, "errors": [], "messages": []}例: 動的値を持つHTTPリクエストヘッダーを追加する
次の例では、既存のフェーズルールセット({ruleset_id})のルールを、動的値を持つHTTPリクエストヘッダーを追加する単一のHTTPリクエストヘッダー修正ルールに設定します。これは、ゾーンルールセットの更新操作を使用しています。
curl --request PUT \https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "expression": "(starts_with(http.request.uri.path, \"/en/\"))", "description": "私の最初のHTTPリクエストヘッダー修正ルール", "action": "rewrite", "action_parameters": { "headers": { "X-Bot-Score": { "operation": "set", "expression": "to_string(cf.bot_management.score)" } } } } ]}'レスポンスには、更新したルールセットの完全な定義が含まれています。
{ "result": { "id": "<RULESET_ID>", "name": "ゾーンレベルのレイトトランスフォームルールセット", "description": "レイトトランスフォームルールを実行するゾーンレベルのルールセット。", "kind": "zone", "version": "2", "rules": [ { "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": "私の最初のHTTPリクエストヘッダー修正ルール", "last_updated": "2021-04-14T14:42:04.219025Z", "ref": "<RULE_REF>" } ], "last_updated": "2021-04-14T14:42:04.219025Z", "phase": "http_request_late_transform" }, "success": true, "errors": [], "messages": []}例: HTTPリクエストヘッダーを削除する
次の例では、既存のフェーズルールセット({ruleset_id})のルールを、HTTPリクエストヘッダーを削除する単一のHTTPリクエストヘッダー修正ルールに設定します。これは、ゾーンルールセットの更新操作を使用しています。
curl --request PUT \https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{ruleset_id} \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "expression": "(starts_with(http.request.uri.path, \"/en/\"))", "description": "私の最初のHTTPリクエストヘッダー修正ルール", "action": "rewrite", "action_parameters": { "headers": { "cf-connecting-ip": { "operation": "remove" } } } } ]}'レスポンスには、更新したルールセットの完全な定義が含まれています。
{ "result": { "id": "<RULESET_ID>", "name": "ゾーンレベルのレイトトランスフォームルールセット", "description": "レイトトランスフォームルールを実行するゾーンレベルのルールセット。", "kind": "zone", "version": "2", "rules": [ { "id": "<RULE_ID>", "version": "1", "action": "rewrite", "action_parameters": { "headers": { "cf-connecting-ip": { "operation": "remove" } } }, "expression": "(starts_with(http.request.uri.path, \"/en/\"))", "description": "私の最初のHTTPリクエストヘッダー修正ルール", "last_updated": "2021-04-14T14:42:04.219025Z", "ref": "<RULE_REF>" } ], "last_updated": "2021-04-14T14:42:04.219025Z", "phase": "http_request_late_transform" }, "success": true, "errors": [], "messages": []}HTTPリクエストヘッダー修正ルールを管理するためにAPIリクエストで使用されるAPIトークンは、少なくとも次の権限を持っている必要があります。
- Transform Rules > Edit
- Account Rulesets > Read