Firefox 错误:尝试仅从扩展中获取资源时出现 NetworkError

时间:2021-03-29 11:04:40

标签: javascript firefox fetch firefox-addon

[问题已经解决,你可以在我的回复中找到解决方案]

我目前正在为 firefox/chrome 开发一个扩展程序,需要从另一个网站获取一些数据。

该扩展程序似乎在 Chrome 中运行良好,但是,在尝试从 Firefox 中尝试该扩展程序时,我收到“尝试获取资源时出现网络错误”。

重要提示:如果我从控制台执行代码,它工作得很好,问题只是来自扩展。

服务器上启用了 CORS,您知道问题的根源是什么吗?

服务端相关代码:

router.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  if (req.headers.authorization !== '***') {
      return res.status(403).json({ error: 'Unauthorized request' });
  }
  next();
});

客户端相关代码:

fetch('https://host:port/api/somepath', {
    headers: new Headers({
        Authorization: '*****',
    }),
})
.then(....

Firefox 错误:

<块引用>

错误:类型错误:尝试获取资源时出现网络错误

扩展清单权限:

"permissions": ["storage", "activeTab", "declarativeContent","webRequest", "webRequestBlocking", "webNavigation"],

2 个答案:

答案 0 :(得分:1)

"<all_urls>" 权限使您可以访问某人访问的每个网站,这有点矫枉过正。您需要为 Firefox 添加的只是您尝试在提取中调用的 URL(例如,在您的示例中为 "https://host:port/api/somepath"

结果扩展清单权限:

"permissions": [
  "storage", 
  "activeTab", 
  "declarativeContent",
  "webRequest", 
  "webRequestBlocking", 
  "webNavigation",
  "https://host:port/api/somepath"
],

答案 1 :(得分:0)

发现问题,我在扩展清单中缺少 1 个权限,添加:

"<all_urls>"

权限数组修复了问题=)