Firefox add-on: 同源策略不允许读取远程资源(原因:无法添加 CORS header ‘Origin’)

Firefox add-on: The Same Origin Policy disallows reading the remote resource (Reason: CORS header ‘Origin’ cannot be added)

我有一个为 Chrome and also upload to Firefox's add-on store. I recently added a feature where the extension makes a cross-domain request to https://tf2metrics.azurewebsites.net 开发的扩展,可以下载一些 json 数据。

来自分机的示例调用:

https://tf2metrics.azurewebsites.net/api/users/76561198142328193,76561198200094518,76561198090551717

相同的源代码在 Chrome 上运行良好,但不适用于 Firefox 用户。

在 Firefox 浏览器控制台中,此调用导致:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://tf2metrics.azurewebsites.net/api/users/76561198142328193,76561198200094518,76561198090551717. (Reason: CORS header ‘Origin’ cannot be added).

我的内容脚本在 https://tf2center.com/lobbies/* 上运行,只有一行 jQuery:

$.get(url, function (data) {
    // do stuff
});

我尝试添加 Origin header,因为错误提示它“无法添加”:

$.ajaxSetup({
    headers: {
        'Origin': "https://tf2center.com"
    }
});

此扩展在 Firefox 上仍然不起作用,并且在 Chrome 上此调用也失败。错误是:

Refused to set unsafe header "Origin"

所以我删除了它。我浏览了一下,看到添加

"permissions": [
  "*://*.tf2center.com/*",
  ...
],

我的 manifest.json 可能会解决问题,但这也不起作用。

此处供参考的是 ASP.NET Core 3.1 Startup.cs 代码,当我第一次需要支持 Chrome:

的功能时,我最初添加该代码来处理 COR
public void ConfigureServices(IServiceCollection services)
{
    services.AddCors();
    ...
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    ...
    app.UseCors(_ => _.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader());
    ...
}

为什么我的 Chrome 扩展允许调用而 Firefox 不允许?我还能尝试什么来修复 Firefox-specific 错误?

我误解了需要添加到 manifest.jsonpermissions 部分的内容。我需要包含我希望调用的 URL 匹配模式,而不是来源的 URL.

"permissions": [
  "https://tf2metrics.azurewebsites.net/*",
  ...
],

我专门更新为仅 https 调用我的站点(不是调用站点),它现在可以在 Firefox 上运行。