Node.js 中的 dns.resolveTxt() 函数

2025 年 3 月 3 日 | 阅读 3 分钟

它使用 DNS 协议 通过调用 dns.resolveTxt() 来解析主机的文本查询,然后其回调函数接受一个名为 addresses 的二维数组,其中包含该主机的可用文本记录。它还返回保存在域名下的 TXT 记录。随机信息被放置在 TXT 记录中,这些记录通常用于 电子邮件安全([DKIM]、[SPF])域的拥有权验证和其他目的。此函数接受一个域名(主机名)和一个回调函数,该函数将返回解析的记录以及任何错误信息。它返回一个数组的数组,其中每个内部数组包含对应于不同 TXT 记录的字符串。因为 dns.resolveTxt() 被设计为异步的,所以在 Node.js 上开发的大规模应用程序中,这对于在 DNS 查询期间进行有效管理而不阻塞事件循环执行流至关重要。

语法

它具有以下语法:

参数

  • 主机名: 包含主机名解析输入。
  • 回调: 可以使用此函数识别错误。
  • 记录: 记录返回从主机名查询到的任何 TXT 记录。
  • 错误: 如果有任何错误,我们将提供错误对象,否则为 null。

示例 1

让我们举一个例子来说明 Node.js 中 dns.resolveTxt() 方法。

输出

 
Error fetching TXT records for 'google.com': Error: queryTxt ECONNREFUSED google.com
    at QueryReqWrap.onresolve [as oncomplete] (dns.js:203:19) {
  errno: 'ECONNREFUSED',
  code: 'ECONNREFUSED',
  syscall: 'queryTxt',
  hostname: 'google.com'
}   

说明

提供的示例 Node.js 代码演示了如何使用 dns.resolveTxt() 方法检索给定域的 TXT 记录。为了启动我们的应用程序,需要导入 dns 模块。然后,它将 dns.resolveTxt() 与回调函数和域名 google.com 作为参数一起调用。此回调函数负责处理 DNS 查询的结果。如果发生错误,将在控制台中记录详细消息(例如,DNS 服务器故障或网络问题)。如果查询成功,则将在控制台中显示检索到的 TXT 记录。这样,任何有关 DNS 解析的问题都可以以易于理解的语言记录和报告,从而使调试更容易,并能理解结果。

示例 2

让我们举另一个例子来说明 Node.js 中 dns.resolveTxt() 方法。

输出

 
Retrieved TXT records: [ [ 'v=spf1 include:_spf.google.com ~all' ] ]
Error retrieving TXT records: Error: queryTxt ECONNREFUSED yahoo.com
    at QueryReqWrap.onresolve [as oncomplete] (dns.js:203:19) {
  errno: 'ECONNREFUSED',
  code: 'ECONNREFUSED',
  syscall: 'queryTxt'   

说明

提供的 Node.js 代码展示了如何使用 dns.resolveTxt() 方法获取域名 yahoo.com 的 TXT 记录。首先,脚本导入提供 DNS 相关功能的 dns 模块。然后,它使用 dns.resolveTxt() 请求与 yahoo.com 关联的 TXT 记录。包含一个回调函数来处理此 DNS 查询的结果。但是,如果在其过程中发生错误,例如连接丢失或找不到域名,则会在该计算机的 console.log 文件中记录一条有用的消息。此配置已被多次使用,并且在成功时,txt 记录会出现在控制台日志中。

结论

总之,此函数允许高效执行 DNS 查询,特别是针对 TXT 记录,这些记录通常用于电子邮件安全和域名验证,使用 Node.jsdns.resolveTxt() 函数。使用此函数,开发人员可以异步处理和检索记录,从而消除事件循环干扰,从而实现应用程序与 DNS 系统的有效交互。提供的代码示例演示了如何有效地使用 dns.resolveTxt() 查询域名的 TXT 记录、处理任何可能发生的错误并返回结果。因此,对于与 DNS 服务器通信相关的任何应用程序来说,它都是必需的,因为此功能提高了 Node.js 环境中与网络相关的操作的可靠性。