Dan*_*ats 8 javascript same-origin-policy google-chrome-extension firefox-addon-webextensions
将我的 Chrome 扩展程序移植到 Firefox 网络扩展程序时,我无法发出任何网络请求,因为它们被同源策略阻止。
举个例子:
const headers = {"content-type": "application/json" };
window.fetch(myDomain + "/api/v3/token", { method: "GET", headers: headers });
Run Code Online (Sandbox Code Playgroud)
这失败并出现以下错误:
有没有办法将 Firefox 扩展配置为不考虑这些请求 CORS?相同的代码作为 Google Chrome 扩展程序工作得很好。
即使请求转到本地主机,这也是正确的。
我已经尝试使用 jquery 的$.ajax方法和 axios 库来获得相同的结果(在 Chrome 中有效,在 Firefox 中无效),所以我认为问题不限于window.fetchAPI。
编辑:我知道我可以在服务器端添加 CORS 处理程序,但我试图不这样做。为什么这在 Chrome 中有效,而在 Firefox 中无效?
编辑 2:扩展是一个弹出窗口
小智 7
这在此处记录:https : //developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions
简而言之,默认情况下,您需要为 localhost 添加一个主机权限以进行同源请求。我不知道为什么谷歌浏览器会以不同的方式处理这个问题。
对于 2022 年遇到此问题的任何人:
Chrome 正在弃用清单 V2,转而使用 v3。所以你可能最终会使用
host_permissions: ["*://domain/*"]
Run Code Online (Sandbox Code Playgroud)
Firefox 尚不支持清单 v3(截至 2022 年 4 月),您需要使用:
permissions: ["*://domain/*"]
Run Code Online (Sandbox Code Playgroud)
然而
如果像我一样,您在使用 chrome(即 )时(成功)指定了端口http://localhost:4000/*,则它将不适用于 Firefox。您需要使用http://localhost/*它,它适用于 chrome 和 firefox。
| 归档时间: |
|
| 查看次数: |
2180 次 |
| 最近记录: |