You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Cloudflare API获取子域名ID时持续返回400错误求助

Cloudflare API 请求返回400状态码的排查原因及修复建议

以下是导致你调用Cloudflare API获取DNS记录时返回400(Bad Request)的常见原因,结合你的代码逐一分析:

  • URL拼接格式错误
    检查CLOUDFLARE_API_URL的末尾是否包含斜杠/。Cloudflare DNS记录API的正确格式为https://api.cloudflare.com/client/v4/zones/{zone_id}/dns_records,如果你的CLOUDFLARE_API_URL没有带末尾的斜杠,拼接后会变成类似https://api.cloudflare.com/client/v4/zonesZONE_ID/dns_records的错误URL,直接触发400错误。

  • 子域名格式不完整
    API的name参数需要传入完整的域名(比如sub.yourdomain.com),如果你传入的subdomain变量只是前缀(比如sub),Cloudflare无法识别该参数,会返回400。

  • 授权头格式错误
    注意区分Cloudflare的两种密钥类型:

    • 使用API Token时,授权头格式是Authorization: Bearer {token}(你的代码当前用的是这种)
    • 使用Global API Key时,授权头格式必须是Authorization: Cloudflare {你的邮箱}:{Global Key}
      若你混淆了密钥类型,会导致请求格式错误,触发400(部分情况会返回403,但格式不规范时也可能返回400)。
  • 参数未做URL编码
    你直接将subdomain拼接到URL中,如果子域名包含特殊字符(虽然域名本身不允许,但存在转义需求时),会导致URL格式非法。建议改用requests的params参数传递查询条件,它会自动处理URL编码:

    url = CLOUDFLARE_API_URL + CLOUDFLARE_ZONE_ID + '/dns_records'
    response = requests.get(url, headers=headers, params={'name': subdomain})
    
  • 不必要的请求头
    GET请求不需要设置Content-Type: application/json,虽然大部分API会忽略这个头,但少数情况下可能会被判定为请求格式错误,尝试移除该头后重试。

另外,建议在代码中增加错误日志输出,打印response.text,Cloudflare的错误响应会包含具体的错误信息,能更快定位问题:

if response.status_code != 200:
    print(response.text)

内容的提问来源于stack exchange,提问作者BestRazer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 03:15:56