[问题已经解决,你可以在我的回复中找到解决方案]
我目前正在为 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"],
答案 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>"
权限数组修复了问题=)