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"],
);

扩展程序示例

浏览器兼容性