配置 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/html、application/json、text/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 内容限制¶
- 允许标签:
html、head、body、title、meta、style、div、span、p、br、hr、h1–h6、a、img、ul、ol、li、dl、dt、dd、table、thead、tbody、tfoot、tr、td、th、caption、col、colgroup、strong、em、b、i、u、small、blockquote、pre、code、sub、sup、section、article、header、footer、main、nav、figure、figcaption。 - 禁止标签:
script、iframe、object、embed、form、base、link、applet、frame、frameset、svg、math、video、audio、source、track、textarea、input、button、select、option、noscript、template,以及不在允许列表中的其他标签。 - 禁止
meta http-equiv属性。 - 禁止
on*事件属性(如onclick、onload)。 - CSS 中禁止:
expression(、javascript:、vbscript:、@import、behavior:、-moz-binding。 - URL 属性(
href、src、action、formaction、xlink:href、poster、cite)及 CSSurl()中禁止javascript:、vbscript:、data:协议;仅允许http://、https://、以/开头的相对路径、#锚点,或整段为模板变量。
JSON 与 XML 内容限制¶
- JSON 内容必须可解析。
- XML 内容必须可解析,禁止 DTD/
DOCTYPE,并同样禁止上述危险标签。
规则与生命周期¶
- 拦截、限速、鉴权动作保存时必须指定一个已启用的拦截页面。
- 已被这些动作引用的页面不能删除。
- 页面停用或不可用时,实际下发会回退到系统默认页。
- 修改自定义页面会触发当前用户 HTTP DDoS 策略重新下发。
创建拦截页面¶
- 进入 CDN / HTTP DDoS → 自定义拦截页面,单击 新增。
- 填写页面名称、选择页面类型、设置启用状态,并可填写备注。
- 如需自定义响应头,单击 添加 Header,填写名称和值;值中可使用模板变量。
- 在正文区域编写页面内容。可单击上方变量按钮将
{{变量名}}插入光标处。 - 在右侧预览中确认展示效果;预览会使用样例值替换模板变量。
- 单击 保存。
在规则中使用¶
- 进入 HTTP DDoS 攻击防护,选择目标策略组。
- 新增或编辑自定义规则,将动作设置为 拦截、限速 或 鉴权。
- 在动作区域选择 拦截页面。
- 保存规则。
说明:若动作未选择拦截页面,规则无法保存。已停用的页面不能被新规则绑定。
验证结果¶
- 拦截页面列表中可看到新页面,状态为“启用”。
- 规则保存成功,且动作中已绑定目标页面。
- 在预览中,模板变量被替换为示例值,无“未识别的变量”提示。
示例¶
以下示例仅展示规则 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 包含不允许的标签”¶
正文包含 script、iframe、form、input、button 等禁止标签,或使用了不在允许列表中的标签。请移除后重试。
无法删除拦截页面¶
该页面仍被拦截、限速或鉴权规则引用。请先在相关规则中更换或移除引用,再删除页面。
页面已停用,但实际返回的是默认页¶
页面停用或不可用后,系统会回退到系统默认页。请检查页面状态,或确认规则是否绑定了其他页面。
拦截响应的状态码与预期不符¶
HTTP 状态码由规则动作指定,不在拦截页面上配置。请检查对应规则动作中的状态码设置。