这是Chrome 70和Firefox 63的版本。
我正在构建一个Web扩展,该Web扩展使用webRequest API来检查混合内容请求,并向用户发送信号。
这在Firefox上运行良好,但是在侦听webRequest事件时,Chrome阻止的混合内容请求(即活动的混合内容,例如脚本)似乎根本没有出现。
即:这样的代码:
chrome.webRequest.onCompleted.addListener(
(details) => {
console.log('ON COMPLETED')
console.log(details)
},
{
urls: ['*://*/*'],
types: ['font', 'image', 'media', 'script', 'stylesheet', 'sub_frame', 'xmlhttprequest']
}
)
在Firefox中不会列出Chrome中任何被阻止的混合内容请求。请注意,这些请求已在chrome开发工具中列出。
其他事件的类似代码具有相同的行为。我测试了 onBeforeRequest 和 onBeforeSendHeaders
“有效”的唯一事件是 onErrorOccurred :
chrome.webRequest.onErrorOccurred.addListener(
(details) => {
console.log('ON ERROR OCCURED')
console.log(details)
},
{
urls: ['*://*/*'],
types: ['font', 'image', 'media', 'script', 'stylesheet', 'sub_frame', 'xmlhttprequest']
}
)
此代码将列出被阻止的请求,但不幸的是,没有足够的信息来使用。如果请求的http资源被阻止并在chrome开发工具中显示为被阻止,则onErrorOccured提供的 details 为:
error: "net::ERR_ABORTED"
frameId: 0
fromCache: false
initiator: "https://www.zdnet.fr"
method: "GET"
parentFrameId: -1
requestId: "1227"
tabId: 18
timeStamp: 1544624802114.908
type: "script"
url: "https://www.zdnet.fr/actualites/https//js.sddan.com/GS.d?pa=22360&si=1&u=https%3A%2F%2Fwww.zdnet.fr%2Factualites%2Fdes-sites-malveillants-profitent-d-un-bug-de-firefox-vieux-de-11-ans-39877807.htm&r=&rand=1544624801997"
这里有2个问题:
1-错误(net :: ERR_ABORTED)似乎是通用的,因为它还会显示chrome开发工具中未显示的更多请求。例如,在404情况下也有报道。
2-更重要的是,“ url”属性显示一个https://目标。这意味着我无法检测到这是一个混合内容请求,并将其报告给用户。
有人可以在这里说些什么吗?如何以一种可靠的方式访问chrome中被阻止的混合内容请求?
非常感谢
非常感谢