webRequest.getSecurityInfo()
使用此函数可获取与特定请求关联的 TLS 连接的详细信息。
您将 `requestId` 传递给此函数以获取相关的请求,以及一些可选的附加参数。它会返回一个 Promise,该 Promise 会解析为一个 SecurityInfo 对象。
您只能在 webRequest.onHeadersReceived 监听器内部调用此函数。`requestId` 可以在传递给监听器的 `details` 对象中找到。
您还必须将“blocking”选项传递给 `webRequest.onHeadersReceived.addListener()`。因此,要使用此 API,您必须拥有“webRequestBlocking” API 权限,以及使用 `webRequest` 监听器所需的常规权限(“webRequest”权限以及目标主机的 host 权限)。
语法
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 请求,并记录服务器证书中的主题名称。
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 请求,并记录受信任根证书中的名称。
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"],
);
扩展程序示例
浏览器兼容性
加载中…