dns.resolve()
将给定的主机名解析为 DNS 记录。
这是一个异步函数,返回一个 Promise
。
语法
js
let resolving = browser.dns.resolve(
hostname, // string
flags // array of string
)
参数
hostname
-
string
。要解析的主机名。 flags
可选-
array
ofstring
。修改主机名解析方式的标志。任何省略的标志默认为false
。您可以传递以下一个或多个标志"allow_name_collisions"
: 允许通常被过滤掉的名称冲突结果。"bypass_cache"
: 禁止内部 DNS 查找缓存。"canonical_name"
: 将查询指定主机的规范名称。"disable_ipv4"
: 只返回 IPv6 地址。"disable_ipv6"
: 只返回 IPv4 地址。"disable_trr"
: 不要使用可信递归解析器 (TRR) 解析主机名。TRR 允许使用专用 DNS-over-HTTPS 服务器解析主机名。"offline"
: 只返回字面值和缓存条目。"priority_low"
: 请求被赋予较低优先级。如果也给出 "priority_medium",则查询被赋予中等优先级。"priority_medium"
: 请求被赋予中等优先级。如果也给出 "priority_low",则查询被赋予中等优先级。"speculate"
: 表示请求是推测性的。如果浏览器的配置禁用了预取,则推测性请求将返回错误。
返回值
一个 Promise
,它将使用 DNSRecord
对象完成。此对象可以包含以下属性
addresses
-
array
ofstring
。与该 DNS 记录关联的 IP 地址。 canonicalName
-
string
。此记录的规范名称。仅当将"canonical_name"
标志传递给resolve()
时,才会在响应中包含此项。 isTRR
-
boolean
: 如果记录是使用可信递归解析器 (TRR) 获取的,则为true
。
浏览器兼容性
BCD 表仅在浏览器中加载
示例
js
function resolved(record) {
console.log(record.addresses);
}
let resolving = browser.dns.resolve("example.com");
resolving.then(resolved);
// > e.g. Array [ "192.0.2.172" ]
绕过缓存,并请求规范名称
js
function resolved(record) {
console.log(record.canonicalName);
console.log(record.addresses);
}
let resolving = browser.dns.resolve("developer.mozilla.org", [
"bypass_cache",
"canonical_name",
]);
resolving.then(resolved);
// > e.g. xyz.us-west-2.elb.amazonaws.com
// > e.g. Array [ "192.0.2.172", "198.51.100.45" ]