dns.resolve()

解析給定的主機名到一個 DNS 記錄。

這是一個非同步函式,返回一個 Promise

語法

js
let resolving = browser.dns.resolve(
  hostname,    // string
  flags        // array of string
)

引數

hostname

string。要解析的主機名。

flags 可選

array of string。用於修改主機名解析方式的標誌。任何省略的標誌預設為 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 物件來 fulfilled。這個物件可以包含以下屬性

addresses

array of string。與此 DNS 記錄關聯的 IP 地址。

canonicalName

string。此記錄的規範名稱。只有當 "canonical_name" 標誌被傳遞給 resolve() 時,才會包含在響應中。

isTRR

boolean: 如果記錄是使用信任遞迴解析器 (TRR) 檢索的,則為 true

示例

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" ]

瀏覽器相容性