webRequest.getSecurityInfo()
使用此函数获取有关与特定请求关联的 TLS 连接的详细信息。
您将此函数传递给有问题的请求的 requestId
和一些可选的额外参数。它返回一个 Promise
,该 Promise 将解析为 SecurityInfo
对象。
您只能从 webRequest.onHeadersReceived
监听器内部调用此函数。requestId
可以在传递到监听器的 details
对象中找到。
您还必须将“blocking”选项传递给 webRequest.onHeadersReceived.addListener()
。因此,要使用此 API,您必须拥有“webRequestBlocking” API 权限,以及使用 webRequest
监听器(“webRequest”权限和主机的主机权限)所需的正常权限 主机权限)。
语法
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 请求,并在服务器证书中记录主题名称
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"],
);