探测扩展时出现 GET net::ERR_FAILED 错误

Posted

技术标签:

【中文标题】探测扩展时出现 GET net::ERR_FAILED 错误【英文标题】:GET net::ERR_FAILED error when probing for extension 【发布时间】:2016-09-27 14:42:03 【问题描述】:

有一个特定的 Chrome 扩展程序,我想通过XMLHttpRequest 从中获取一个 PNG 文件。如果扩展启用,我想向控制台写入“加载”,如果扩展被禁用,我想向控制台写入“错误”。

它工作正常,但如果扩展程序被禁用,Chrome 会在控制台中写入我不想出现的错误:

如何从控制台中删除此错误?

(我试过window.onerror但是不行)

代码:

var loadHref = function(href) 
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onload = function()console.log('load');
    xmlhttp.onerror = function() console.log('error');;
    xmlhttp.open('GET', href);
    xmlhttp.send();

loadHref('chrome-extension://77672b238520494cba8855547dd00ba8/img/icon24.png');

【问题讨论】:

【参考方案1】:

基本上,您无法消除这些错误,因为它们不是 JS 错误而是网络错误。

假设您的目标是检测是否存在特定扩展:

    假设您在特定域和由您控制的特定扩展需要它。

    在这种情况下,最佳方法是externally_connectable communication。这是sample。

    假设您在事先不知道的非特定域中需要它,但您可以控制扩展。

    在这种情况下,可以注入一个Content Script(可能是"run_at": "document_start")并在文档中添加一些东西,表明存在扩展。例如,injecting a page-level script 设置了一个变量。

    假设你不控制扩展。

    好吧,在那种情况下,你就完蛋了。如果扩展程序不以上述方式进行合作,则探测其 Web 可访问资源(如果有的话!)是检测它的唯一方法,而不是监视 DOM 中的特定内容脚本活动(再次,如果有的话)。

【讨论】:

你说得对,我想识别不是我的扩展名,我需要控制台来清除错误,你知道其他方法吗?谢谢... “你完蛋了”哪一部分不清楚?但是,如果您可以检测到内容脚本对 DOM 所做的一些更改,那可能是另一种选择。这很大程度上取决于扩展程序的作用。【参考方案2】:

实际上,error when chrome cast extension is not installed 上已经存在使用 google-cast-sdk 的问题,并且基于该问题跟踪器,这还没有完全解决。但是,comments 之一提供了解决方法:

解决方法是安装 Google Cast 扩展程序或禁用网络警告(请注意,您可能会错过一些您可能感兴趣的警告),这样您就不会看到这些额外的日志。

而且,您还可以尝试使用此 SO 帖子中给出的可能解决方案 - Google chrome cast sender error if chrome cast extension is not installed or using incognito,谁知道呢,它可能会有所帮助。 :)

【讨论】:

请注意:Cast SDK 通过从 Chrome 中的控制台报告中过滤掉某些字符串来“解决”这个问题。一般来说,没有办法让 JS 代码中的 tentative-request-to-extension 失败,这就是为什么需要这样的解决方法。

以上是关于探测扩展时出现 GET net::ERR_FAILED 错误的主要内容,如果未能解决你的问题,请参考以下文章

发送 GET 数据时出现 403 禁止错误

进行 axios.get 调用时出现 CORS 错误

从 BigQuery 查询到 Jupyter 时出现“'NotebookFormatter' 对象没有属性 'get_result'”错误?

尝试 GET 时出现 WCF REST 404

发出 GET 请求时没有 CORS 错误,但发出 POST 请求时出现 CORS 错误

使用 QNetworkAccessManager::get() 函数从 FTP 下载文件时出现问题