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"],
);
擴充套件程式示例
瀏覽器相容性
載入中…