webRequest.getSecurityInfo()

使用此函式可獲取與特定請求關聯的 TLS 連線的詳細資訊。

您將 `requestId` 傳遞給此函式以獲取相關的請求,以及一些可選的附加引數。它會返回一個 Promise,該 Promise 會解析為一個 SecurityInfo 物件。

您只能在 webRequest.onHeadersReceived 監聽器內部呼叫此函式。`requestId` 可以在傳遞給監聽器的 `details` 物件中找到。

您還必須將“blocking”選項傳遞給 `webRequest.onHeadersReceived.addListener()`。因此,要使用此 API,您必須擁有“webRequestBlocking” API 許可權,以及使用 `webRequest` 監聽器所需的常規許可權(“webRequest”許可權以及目標主機的 host 許可權)。

語法

js
let gettingInfo = browser.webRequest.getSecurityInfo(
  requestId,       // string
  options          // optional object
)

引數

requestId

string。您想獲取安全資訊的請求的 ID。您可以從傳遞給任何 `webRequest` 事件監聽器的 `details` 物件中獲取此 ID。

options 可選

object。一個可以包含以下任何屬性的物件。

certificateChain 可選

boolean。如果為 `true`,則返回的 SecurityInfo 物件將包含直至信任根(包括信任根)的整個證書鏈。如果為 `false`,則僅包含伺服器證書。預設為 `false`。

rawDER 可選

boolean。如果為 `true`,則 SecurityInfo.certificates 屬性中的每個 CertificateInfo 都將包含一個 `rawDER` 屬性。該屬性包含構成證書資料的 DER 編碼的 ASN.1。

返回值

一個 Promise,它解析為一個 SecurityInfo 物件。

示例

此示例監聽“mozilla.org”或其子域的所有 HTTPS 請求,並記錄伺服器證書中的主題名稱。

js
async function logSubject(details) {
  try {
    let securityInfo = await browser.webRequest.getSecurityInfo(
      details.requestId,
      {},
    );
    console.log(details.url);
    if (securityInfo.state === "secure" || securityInfo.state === "weak") {
      console.log(securityInfo.certificates[0].subject);
    }
  } catch (error) {
    console.error(error);
  }
}

browser.webRequest.onHeadersReceived.addListener(
  logSubject,
  { urls: ["https://*.mozilla.org/*"] },
  ["blocking"],
);

此示例監聽“mozilla.org”或其子域的所有 HTTPS 請求,並記錄受信任根證書中的名稱。

js
async function logRoot(details) {
  try {
    let securityInfo = await browser.webRequest.getSecurityInfo(
      details.requestId,
      { certificateChain: true },
    );
    console.log(details.url);
    if (securityInfo.state === "secure" || securityInfo.state === "weak") {
      console.log(
        securityInfo.certificates[securityInfo.certificates.length - 1].issuer,
      );
    }
  } catch (error) {
    console.error(error);
  }
}

browser.webRequest.onHeadersReceived.addListener(
  logRoot,
  { urls: ["https://*.mozilla.org/*"] },
  ["blocking"],
);

擴充套件程式示例

瀏覽器相容性