webRequest.getSecurityInfo()

使用此函数获取有关与特定请求关联的 TLS 连接的详细信息。

您将此函数传递给有问题的请求的 requestId 和一些可选的额外参数。它返回一个 Promise,该 Promise 将解析为 SecurityInfo 对象。

您只能从 webRequest.onHeadersReceived 监听器内部调用此函数。requestId 可以在传递到监听器的 details 对象中找到。

您还必须将“blocking”选项传递给 webRequest.onHeadersReceived.addListener()。因此,要使用此 API,您必须拥有“webRequestBlocking” API 权限,以及使用 webRequest 监听器(“webRequest”权限和主机的主机权限)所需的正常权限 主机权限)。

语法

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

参数

requestId

string。您想要获取安全信息的请求的 ID。您可以从传递到任何 webRequest 事件监听器的 details 对象中获取此信息。

options 可选

object。一个对象,可以包含以下任何属性

certificateChain 可选

boolean。如果为 true,则返回的 SecurityInfo 对象将包含直到并包括信任根的整个证书链。如果为 false,则它将仅包含服务器证书。默认为 false

rawDER 可选

boolean。如果为 true,则 SecurityInfo.certificates 属性中的每个 CertificateInfo 将包含一个属性 rawDER。这包含构成证书数据的 DER 编码 ASN.1。

返回值

一个 Promise,它解析为 SecurityInfo 对象。

浏览器兼容性

BCD 表格仅在浏览器中加载

示例

此示例侦听对“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"],
);

扩展示例