调用 Cloudflare API 创建 DNS 记录返回 403 禁止访问?

文章导读
遇到 403 禁止访问,通常是 API Token 权限不足或作用域配置错误,优先检查 Token 是否拥有目标域名的 DNS 编辑权限。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

遇到 403 禁止访问,通常是 API Token 权限不足或作用域配置错误,优先检查 Token 是否拥有目标域名的 DNS 编辑权限。

先说结论:大多数 403 错误源于权限配置而非账号封禁,按权限最小化原则调整 Token 即可解决。

  • 先确认 Token 权限包含 Zone:DNS:Edit
  • 先处理 替换为具备完整域权限的 Token
  • 再验证 使用 curl 重放请求观察状态码

命令速用版

curl -X POST "https://api.cloudflare.com/v4/zones/YOUR_ZONE_ID/dns_records" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
`--data` '{"type":"A","name":"example.com","content":"1.2.3.4","ttl":120,"proxied":false}'

为什么会这样

Cloudflare API v4 采用基于 Token 的权限控制机制。403 错误明确表示服务器理解了请求但拒绝授权,常见原因包括 Token 未勾选 DNS 编辑权限、Token 被限制在特定域名但请求了其他域名、或使用了已撤销的密钥。

调用 Cloudflare API 创建 DNS 记录返回 403 禁止访问?

分步处理

  1. 检查 Token 权限:登录 Cloudflare 控制台,点击右上角头像进入 My Profile,选择 API Tokens 标签页。查看所用 Token 的 Permissions 是否包含 Zone > DNS > Edit。若缺失,需创建新的 Custom Token 并勾选该权限。
  2. 核对 Zone ID:确保请求 URL 中的 Zone ID 与 Token 作用域内的域名 ID 一致。可在域名概述页右侧获取,或通过 API 列表接口查询。
  3. 谨慎使用 Global API Key 测试:若怀疑 Token 配置问题,可临时使用 Global API Key 排除故障。警告:Global Key 拥有账户完全控制权,仅限调试使用。测试完成后请立即改回 Token 认证,切勿将 Global Key 硬编码在生产环境中。

怎么验证是否生效

执行请求后,观察 HTTP 状态码及响应体。

调用 Cloudflare API 创建 DNS 记录返回 403 禁止访问?

成功响应示例(HTTP 200/201):

{
  "success": true,
  "errors": [],
  "messages": [],
  "result": { ... }
}

403 错误响应示例:

调用 Cloudflare API 创建 DNS 记录返回 403 禁止访问?
{
  "success": false,
  "errors": [
    {
      "code": 10000,
      "message": "Authentication error"
    }
  ],
  "messages": []
}

若仍返回 403,检查响应体中的 error 信息确认具体权限缺失项,常见错误码会提示权限不足或资源不可访问。

常见坑

  • Global API Key 权限过大,泄露风险高,不建议在客户端脚本中长期使用。
  • Token 作用域限制了特定 Zone,但请求了未授权的 Zone ID。
  • 服务器 IP 被 Cloudflare WAF 拦截,导致 API 请求被误判为攻击,需检查防火墙事件日志。
  • JSON 格式错误:请求体必须是合法的 JSON 字符串,注意引号转义。

参考来源

  • Cloudflare Developer Documentation, Get started with the Cloudflare API, https://developers.cloudflare.com/fundamentals/api/get-started/