【问题标题】:Cloudflare API issue put request ("code":9020,"message":"Invalid DNS record type")Cloudflare API 发出 put 请求("code":9020,"message":"Invalid DNS record type")
【发布时间】:2019-06-24 12:12:14
【问题描述】:

我在使用 cloudflare APIv4 时遇到问题。尝试更新 dns 记录但不确定为什么会收到以下错误:

{"success":false,"errors":[{"code":1004,"message":"DNS 验证错误","error_chain":[{"code":9020,"message":"无效DNS 记录类型"}]}],"messages":[],"result":null}

这里是 PHP 函数:          

function updateCloudflareDNS($zone_id,$dns_id, $updatedata){
 $updatedata = '[{"name":"**.****.com"},{"type":"A"},{"ttl":"1"},{"content":"8.8.8.8"},{"proxied":"true"}]';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.cloudflare.com/client/v4/zones/".$zone_id."/dns_records/".$dns_id);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json; charset=utf-8',
    'X-Auth-Email: **********',
    'X-Auth-Key: ***********'
));    
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $updatedata);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);    
$response = curl_exec($ch);
curl_close($ch);
return $response;
}

另外,我正确输入了Cloudflare API documentation 中提到的记录类型“A”

有人可以帮我解决这个问题吗?

谢谢

【问题讨论】:

标签: php api curl dns cloudflare


【解决方案1】:

您正在发送的有效负载为:

[{"name":"**.****.com"},{"type":"A"},{"ttl":"1"},{"content":"8.8.8.8"},{"proxied":"true"}]

API 的期望如下:

{"type":"A", "name":"example.com", "content":"127.0.0.1", "ttl":120, "priority":10,"proxied":false}

这就是您在 PHP 中正确构造 JSON 的方式:

$POST = json_encode(array(
    "type" => "A",
    "name" => "...",
    ...
));

【讨论】:

  • 愚蠢的错误......谢谢
猜你喜欢
  • 1970-01-01
  • 2021-09-03
  • 2020-09-26
  • 2023-03-15
  • 1970-01-01
  • 2017-10-18
  • 2022-01-10
  • 2021-09-16
  • 1970-01-01
相关资源
最近更新 更多