如何在清单版本 3 的扩展中获取任何网络请求的错误详细信息?我需要从选项卡或获取请求中获取错误详细信息(net:ERR 或状态码等错误)
我在清单版本 2 中是如何做到的:
如何从获取请求中获取 net:ERR 错误:
我们 100% 得到错误 ERR_NAME_NOT_RESOLVED 的不存在的站点
_fetch('https://dsdsdf.asdafgfsa.net/', {})
let fetchRequests = []
async function _fetch(url, options) {
let listener
const removeListener = ()=>{
if (listener) {
chrome.webRequest.onBeforeRequest.removeListener(listener)
listener = null
}
}
listener = (details)=>{
if (details.initiator == 'chrome-extension://' + chrome.runtime.id && details.url.includes(url)) {
fetchRequests.push(details.requestId)
removeListener()
}
}
chrome.webRequest.onBeforeRequest.addListener(listener, {urls: ['<all_urls>']})
try {
const response = await fetch(url, options)
return response
} catch(e) {
throw e
} finally {
removeListener()
}
}
chrome.webRequest.onErrorOccurred.addListener(function(details) {
if (details.initiator == 'chrome-extension://' + chrome.runtime.id) {
if (fetchRequests.indexOf(details.requestId) != -1) {
//Here we get the details of our error from the fetch request
console.error(details.url, details.error)
}
} else if (details.type == 'main_frame') {
//Here we get the details of our error from the tab
console.error(details.url, details.error)
}
}, {urls: ['<all_urls>']})
如何从选项卡中获取错误代码(状态代码):
chrome.webRequest.onCompleted.addListener(function(details) {
if (details.type == 'main_frame' && (details.statusCode < 200 || details.statusCode > 299)) {
console.error(details.url, details.statusCode)
}
}, {urls: ['<all_urls>']})
以及如何在清单版本 3 上执行此操作?我查看了 declarativeNetRequest 但它不允许这样做。我没有找到可以提供此类错误详细信息的另一个 API(webNavigation 除外,但它没有提供有关获取请求错误的信息)