从webRequest获取文件的校验和

时间:2016-01-25 14:52:33

标签: javascript google-chrome-extension

我正在编写一个Google Chrome扩展程序,其中包含用于javascript文件的SHA256校验和的白名单。只应该执行此白名单中的文件,其他所有文件都应该被阻止。

目前,我使用效率低但工作正常的代码来获取校验和并阻止请求。

chrome.webRequest.onHeadersReceived.addListener(
    function(details) {
        if(details.type == "script")
        {
            return getURL(details.url, false, function(data) {
                var content = sha256(data);

                if( hashList.indexOf(content) == -1 )
                {
                    console.error(details.url+" not in whitelist");
                    return {cancel: true};
                }
            });
        }
    }, {
        urls: ["<all_urls>"],
        types: ["main_frame","script"]
    }, ["blocking", "responseHeaders"]
);

此代码的问题:

  • 效率非常低,因为这需要两次下载每个文件。
  • 必须同步运行才能在到达客户端之前停止文件。这使延迟更大。

我想了解/询问是否有方法可以通过访问源文件来避免这些问题,而无需下载两次(在documentation中找不到任何内容)或至少通过任何其他方式提高性能。< / p>

1 个答案:

答案 0 :(得分:0)

先生。不幸的是,Cameron无法使用webRequest API获取请求体。

部分这是正确的,因为保存请求的内容可能会导致性能问题。 See此讨论了解更多细节。