跳转至

配置 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
status HTTP 状态码(取自拦截动作)

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;
      }
      .icon {
        width: 56px;
        height: 56px;
        margin: 0 auto 10px;
        border-radius: 50%;
        background: #e8f3ff;
        color: #006eff;
        font-size: 32px;
        font-weight: 700;
        line-height: 56px;
      }
      .code {
        font-size: 32px;
        font-weight: 700;
        color: #006eff;
        letter-spacing: 2px;
        margin-bottom: 8px;
        font-family: Consolas, monospace;
      }
      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">
      <div class="icon">!</div>
      <div class="code">{{status}}</div>
      <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 状态码由规则动作指定,不在拦截页面上配置。请检查对应规则动作中的状态码设置。

相关文档