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

GoDaddy Domain API创建CNAME记录遇ACCESS_DENIED错误求助

排查GoDaddy Domain API创建CNAME记录时的ACCESS_DENIED错误

问题描述

尝试通过GoDaddy Domain API动态注册子域名CNAME记录时,持续收到权限错误:

Error creating CNAME record: {
  code: 'ACCESS_DENIED',
  message: 'Authenticated user is not allowed access'
}
Error creating restaurant: Error creating CNAME record

已获取GoDaddy开发者平台的API Key和Secret Key,本地开发用ngrok暴露服务,使用Axios发送请求的代码如下:

const axios = require('axios');

const createSubdomain = async (subdomain) => {
  const domain = process.env.DOMAIN; 
  const apiKey = process.env.GODADDY_API_KEY;
  const apiSecret = process.env.GODADDY_API_SECRET;

  if (!apiKey || !apiSecret) {
    throw new Error('API key or secret is not provided in environment variables.');
  }

  const url = `https://api.godaddy.com/v1/domains/${domain}/records`;

  const headers = {
    Authorization: `sso-key ${apiKey}:${apiSecret}`,
    'Content-Type': 'application/json'
  };

  const ngrokUrl = '075c-190-8-35-73.ngrok-free.app';

  const body = [
    {
      type: 'CNAME',
      name: subdomain,
      data: ngrokUrl, 
      ttl: 600
    }
  ];

  try {
    const response = await axios.patch(url, body, { headers });
    if (response.status === 200 || response.status === 201) {
      console.log('CNAME record created successfully for:', subdomain);
      return true;
    } else {
      throw new Error(`Failed to create CNAME record. Status: ${response.status}`);
    }
  } catch (error) {
    console.error('Error creating CNAME record:', error.response?.data || error.message);
    throw new Error('Error creating CNAME record');
  }
};

module.exports = createSubdomain;

排查与修复步骤

1. 确认API Key的权限范围

  • 登录GoDaddy开发者平台,检查创建API Key时是否勾选Domain Management的读写权限(至少需要Write权限)。默认生成的Key可能仅包含只读权限,无法修改DNS记录。
  • 确保API Key关联的账户是目标域名的所有者,或具有该域名管理权限的子账户。

2. 验证凭证与环境变量

  • 检查process.env.GODADDY_API_KEY和process.env.GODADDY_API_SECRET是否正确加载,无多余空格、换行符。可临时打印这两个值(注意不要泄露)确认格式无误。
  • 确认Authorization头格式正确:sso-key ${apiKey}:${apiSecret},无拼写错误(如顺序颠倒、多写冒号等)。

3. 匹配API环境(测试/生产)

  • GoDaddy API分测试环境(https://api.ote-godaddy.com)和生产环境(https://api.godaddy.com)。测试环境生成的Key只能操作测试域名(如example.test),生产Key必须使用生产环境地址,混用会触发权限错误。

4. 调整API请求方法与端点

  • 创建新DNS记录建议使用PUT方法而非PATCH(PATCH用于更新现有记录,PUT支持覆盖或创建),将axios.patch改为axios.put尝试解决问题。
  • 可使用更精确的端点:https://api.godaddy.com/v1/domains/${domain}/records/CNAME/${subdomain},避免批量操作的权限限制。

5. 检查域名DNS管理状态

  • 确认目标域名使用GoDaddy默认DNS服务器。若域名已切换到第三方DNS服务,GoDaddy API无法修改其记录,会返回权限错误。登录GoDaddy域名后台查看DNS设置即可确认。

6. 测试基础API连通性

  • 先发送GET请求调用https://api.godaddy.com/v1/domains/${domain}/records获取当前DNS记录。若GET请求也返回ACCESS_DENIED,说明凭证或权限本身存在问题;若GET成功,则是PUT/PATCH操作的权限或方法问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:21:05