使用 Rulesets API 通过 API 创建 Request Header Transform Rules。有关常见用例,请参阅 Rules 示例库。
如果使用 Terraform,请参阅 使用 Terraform 配置 Transform Rules。
通过 API 创建请求头转换规则时,请确保:
- 将规则操作设置为
rewrite。 - 根据要执行的操作(设置或移除标头),在
action_parameters字段中定义标头修改参数。 - 在 zone 级别将规则部署到
http_request_late_transform阶段。
通过 API 为给定 zone 创建 a request header transform rule 时,请遵循以下工作流:
使用 List zone rulesets 操作检查 zone 级别是否已有
http_request_late_transformphase 的 ruleset。-
如果 phase ruleset 不存在,使用 Create a zone ruleset 操作创建。在新 ruleset 属性中设置以下值:
- kind:
zone - phase:
http_request_late_transform
- kind:
使用 Update a zone ruleset 操作将 a request header transform rule 添加到 ruleset 规则列表。或者,在上一步的 Create a zone ruleset 请求中包含该规则。
请确保你的 API 令牌具有执行 API 操作的所需权限。
示例:添加带有静态值的 HTTP 请求头
以下示例使用 Update a zone ruleset 操作,将现有 phase ruleset($RULESET_ID)的规则设置为单条请求头转换规则——添加带有静态值的 HTTP 请求头。响应将包含你所更新 ruleset 的完整定义。
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_header_source",
"expression": "(starts_with(http.request.uri.path, \"/en/\"))",
"description": "My first request header transform rule",
"action": "rewrite",
"action_parameters": {
"headers": {
"X-Source": {
"operation": "set",
"value": "Cloudflare"
}
}
}
}
]
}'{
"result": {
"id": "<RULESET_ID>",
"name": "Zone-level Late Transform Ruleset",
"description": "Zone-level ruleset that will execute Late Transform Rules.",
"kind": "zone",
"version": "2",
"rules": [
{
"ref": "add_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 request header transform rule",
"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": []
}使用 Terraform 时,通过 ref 字段可在更新后保持稳定的规则 ID。添加该字段可防止 Terraform 在变更时重建规则。更多信息请参阅 故障排除(Terraform 文档)。
示例:添加带有动态值的 HTTP 请求头
以下示例使用 Update a zone ruleset 操作,将现有 phase ruleset($RULESET_ID)的规则设置为单条请求头转换规则——添加带有动态值的 HTTP 请求头。响应将包含你所更新 ruleset 的完整定义。
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_header_bot_score",
"expression": "(starts_with(http.request.uri.path, \"/en/\"))",
"description": "My first request 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 Late Transform Ruleset",
"description": "Zone-level ruleset that will execute Late Transform Rules.",
"kind": "zone",
"version": "2",
"rules": [
{
"ref": "add_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 request header transform rule",
"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": []
}使用 Terraform 时,通过 ref 字段可在更新后保持稳定的规则 ID。添加该字段可防止 Terraform 在变更时重建规则。更多信息请参阅 故障排除(Terraform 文档)。
示例:移除 HTTP 请求头
以下示例使用 Update a zone ruleset,将现有 phase ruleset($RULESET_ID)的规则设置为单条请求头转换规则——移除 HTTP 请求头。响应将包含你所更新 ruleset 的完整定义。
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_header_cf_connecting_ip",
"expression": "(starts_with(http.request.uri.path, \"/en/\"))",
"description": "My first request header transform rule",
"action": "rewrite",
"action_parameters": {
"headers": {
"cf-connecting-ip": {
"operation": "remove"
}
}
}
}
]
}'{
"result": {
"id": "<RULESET_ID>",
"name": "Zone-level Late Transform Ruleset",
"description": "Zone-level ruleset that will execute Late Transform Rules.",
"kind": "zone",
"version": "2",
"rules": [
{
"ref": "remove_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 request header transform rule",
"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": []
}使用 Terraform 时,通过 ref 字段可在更新后保持稳定的规则 ID。添加该字段可防止 Terraform 在变更时重建规则。更多信息请参阅 故障排除(Terraform 文档)。
用于管理 Request Header Transform Rules 的 API 请求中的 API 令牌,至少必须具有以下权限:
- Transform Rules > Edit
- Account Rulesets > Read