Node.js dns.resolveCname查询始终返回ENODATA错误原因咨询
报错原因说明
dns.resolveCname抛出ENODATA错误,是因为目标域名nodejs.org本身不存在CNAME类型的DNS记录,和你的网络环境、EC2端口配置、代码写法都没有关系。
这个结果完全符合DNS协议的强制规则:
- 按照RFC 1034协议要求,只要某个域名配置了CNAME记录,就不能同时存在MX、A、SOA、TXT等其他任何类型的DNS记录
- 你查询的
nodejs.org是顶点域名(无前缀的根域名),默认必须配置SOA记录用于标记所属的解析区域,而且你自己的测试也已经确认该域名存在MX记录,因此它从规则上就不可能配置CNAME记录,查询不到对应记录是完全正常的结果。
如果你要验证接口功能正常,可以换一个存在CNAME记录的域名测试,比如www.nodejs.org,调用dns.resolveCname('www.nodejs.org', callback)就能正常拿到返回结果,不会报错。
内容的提问来源于stack exchange,提问作者Tamil Vendhan Kanagarasu
相关产品推荐
相关产品推荐

