Firefox 扩展请求被解释为 CORS

Posted

技术标签:

【中文标题】Firefox 扩展请求被解释为 CORS【英文标题】:Firefox extension request is interpreted as CORS 【发布时间】:2018-08-11 01:36:26 【问题描述】:

将我的 Chrome 扩展程序移植到 Firefox 网络扩展程序时,我无法发出任何网络请求,因为它们被同源策略阻止。

举个例子:

const headers = "content-type": "application/json" ;
window.fetch(myDomain + "/api/v3/token",  method: "GET", headers: headers );

这会失败并出现以下错误:

有没有办法将 Firefox 扩展配置为不考虑这些请求 CORS?相同的代码可以作为 Google Chrome 扩展程序正常工作。

即使请求转到本地主机也是如此。

我已经尝试使用 jquery 的 $.ajax 方法和 axios 库来获得相同的结果(在 Chrome 中有效,在 Firefox 中无效)所以我认为问题不限于 window.fetch API。

编辑:我知道我可以在服务器端添加一个 CORS 处理程序,但我试图不这样做。为什么这在 Chrome 中有效,而在 Firefox 中无效?

编辑 2:扩展是一个弹出窗口

【问题讨论】:

Firefox 中的 WebExtensions API 即使在核心部分仍然存在许多错误,所以也许这是另一个错误。 在 Firefox Scratchpad 中执行相同操作时是否有效(在 Firefox 中为 Shift+F4)? 【参考方案1】:

这在此处记录: https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions

简而言之,默认情况下您需要为 localhost 添加一个主机权限来处理同源请求。我不知道为什么谷歌浏览器会以不同的方式处理这个问题。

【讨论】:

添加什么到哪里如何?

以上是关于Firefox 扩展请求被解释为 CORS的主要内容,如果未能解决你的问题,请参考以下文章

Firefox扩展开发

VivaldiFox扩展:让Firefox获得动态UI颜色功能

跨域请求在 Firefox 中被阻止

跨域请求仅在 Firefox 中被阻止! [选项:403 禁止]

对 WP API 的 POST 请求被解释为 GET 请求

从 Firefox 扩展发送电子邮件