跳转至

配置 HTTP DDoS 自定义拦截页面

当 HTTP DDoS 自定义规则命中 拦截限速鉴权 动作时,节点会向客户端返回一个拦截页面。您可以自定义该页面的正文、类型和响应头,用于展示品牌提示、返回 JSON/XML 给 API 客户端,或向用户提供排查所需的规则 ID、请求 ID 和时间。

注意:HTTP 状态码在规则动作中选择,不在拦截页面上配置。

适用场景

  • 向访客展示统一的拦截提示页,包含规则 ID、请求 ID 和拦截时间,便于用户向网站管理员反馈。
  • 向 API 客户端返回结构化的 JSON 或 XML 错误内容。
  • 为不同业务配置不同风格的拦截页,并通过规则动作分别引用。

前提条件

  • 域名已开通并启用 HTTP DDoS 防护。

核心概念

概念 说明
系统默认页 所有用户可见、可调用,控制台不可编辑或删除。
用户自定义页 归属当前账号,最多 20 个,可编辑、删除。
状态码与页面分离 拦截动作中选择 HTTP 状态码;页面只负责正文、类型和响应头。

限制说明

保存拦截页面时,系统会按以下规则校验,不满足将直接拒绝。

配额与字段

项目 限制
页面数量 每个用户最多 20 个自定义页面(不含系统默认页)。
页面名称 1–30 位中文、字母、数字、下划线或中划线;同一用户下唯一。
备注 最多 100 字。
正文 UTF-8 编码,最多 8KB。
页面类型 仅支持 text/htmlapplication/jsontext/xml
自定义 Header 最多 10 组;名称由 A-Za-z0-9- 组成且 1–64 位;值最多 200 字符且不能含换行;名称不重复。

模板变量

正文和 Header 值中可以使用 {{变量名}} 占位符。仅支持下表中的变量,使用未列出的变量会导致保存失败。

变量 含义
request_id 请求 ID
client_ip 客户端 IP
host 请求 Host
uri 请求路径
method HTTP 方法
user_agent User-Agent
time 拦截时间
country 国家代码
rule_id 命中规则 ID

HTML 内容限制

  • 允许标签:htmlheadbodytitlemetastyledivspanpbrhrh1h6aimgulollidldtddtabletheadtbodytfoottrtdthcaptioncolcolgroupstrongembiusmallblockquoteprecodesubsupsectionarticleheaderfootermainnavfigurefigcaption
  • 禁止标签:scriptiframeobjectembedformbaselinkappletframeframesetsvgmathvideoaudiosourcetracktextareainputbuttonselectoptionnoscripttemplate,以及不在允许列表中的其他标签。
  • 禁止 meta http-equiv 属性。
  • 禁止 on* 事件属性(如 onclickonload)。
  • CSS 中禁止:expression(javascript:vbscript:@importbehavior:-moz-binding
  • URL 属性(hrefsrcactionformactionxlink:hrefpostercite)及 CSS url() 中禁止 javascript:vbscript:data: 协议;仅允许 http://https://、以 / 开头的相对路径、# 锚点,或整段为模板变量。

JSON 与 XML 内容限制

  • JSON 内容必须可解析。
  • XML 内容必须可解析,禁止 DTD/DOCTYPE,并同样禁止上述危险标签。

规则与生命周期

  • 拦截、限速、鉴权动作保存时必须指定一个已启用的拦截页面。
  • 已被这些动作引用的页面不能删除。
  • 页面停用或不可用时,实际下发会回退到系统默认页。
  • 修改自定义页面会触发当前用户 HTTP DDoS 策略重新下发。

创建拦截页面

  1. 进入 CDN / HTTP DDoS → 自定义拦截页面,单击 新增
  2. 填写页面名称、选择页面类型、设置启用状态,并可填写备注。
  3. 如需自定义响应头,单击 添加 Header,填写名称和值;值中可使用模板变量。
  4. 在正文区域编写页面内容。可单击上方变量按钮将 {{变量名}} 插入光标处。
  5. 在右侧预览中确认展示效果;预览会使用样例值替换模板变量。
  6. 单击 保存

在规则中使用

  1. 进入 HTTP DDoS 攻击防护,选择目标策略组。
  2. 新增或编辑自定义规则,将动作设置为 拦截限速鉴权
  3. 在动作区域选择 拦截页面
  4. 保存规则。

说明:若动作未选择拦截页面,规则无法保存。已停用的页面不能被新规则绑定。

验证结果

  • 拦截页面列表中可看到新页面,状态为“启用”。
  • 规则保存成功,且动作中已绑定目标页面。
  • 在预览中,模板变量被替换为示例值,无“未识别的变量”提示。

示例

以下示例仅展示规则 ID、请求 ID 和时间,满足 8KB 与标签白名单要求:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Access Denied</title>
<style>
body{font-family:Arial,sans-serif;background:#fff;color:#333;text-align:center;padding:60px}
.card{max-width:420px;margin:0 auto;border:1px solid #e8eef6;border-radius:8px;padding:32px}
h1{font-size:20px;margin-bottom:8px}
.meta{background:#f7faff;border:1px solid #e8f0fb;border-radius:6px;padding:12px;text-align:left;font-size:13px}
.row{display:flex;justify-content:space-between;padding:6px 0}
.k{color:#666}
.v{color:#006eff;font-family:Consolas,monospace}
</style>
</head>
<body>
<div class="card">
<h1>访问已被拦截</h1>
<p>您的请求触发了安全策略。</p>
<div class="meta">
<div class="row"><span class="k">规则 ID</span><span class="v">{{rule_id}}</span></div>
<div class="row"><span class="k">请求 ID</span><span class="v">{{request_id}}</span></div>
<div class="row"><span class="k">时间</span><span class="v">{{time}}</span></div>
</div>
</div>
</body>
</html>

常见问题

保存时提示“存在未允许的模板变量”

正文或 Header 值中使用了不在白名单中的 {{变量}}。请仅使用上表列出的变量名。

保存时提示“HTML 包含不允许的标签”

正文包含 scriptiframeforminputbutton 等禁止标签,或使用了不在允许列表中的标签。请移除后重试。

无法删除拦截页面

该页面仍被拦截、限速或鉴权规则引用。请先在相关规则中更换或移除引用,再删除页面。

页面已停用,但实际返回的是默认页

页面停用或不可用后,系统会回退到系统默认页。请检查页面状态,或确认规则是否绑定了其他页面。

拦截响应的状态码与预期不符

HTTP 状态码由规则动作指定,不在拦截页面上配置。请检查对应规则动作中的状态码设置。

相关文档