微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Firefox附加组件:同源策略禁止读取远程资源原因:无法添加CORS标头“来源”

如何解决Firefox附加组件:同源策略禁止读取远程资源原因:无法添加CORS标头“来源”

我有一个针对Chrome开发的扩展程序,并且还上传到了Firefox的附加商店中。我最近添加了一项功能,该扩展程序向https://tf2metrics.azurewebsites.net发出跨域请求,以下载一些json数据。

从分机拨打电话:

https://tf2metrics.azurewebsites.net/api/users/76561198142328193,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,76561198090551717. (Reason: CORS header ‘Origin’ cannot be added).

我的内容脚本使用简单的jQuery在https://tf2center.com/lobbies/ *上运行:

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

我尝试添加Origin标头,因为错误表明它“无法添加”:

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

此扩展程序仍无法在Firefox上运行,并且在Chrome上与此调用同时失败。错误是:

Refused to set unsafe header "Origin"

所以我删除了。我浏览了一下,发现添加

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

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

作为参考,这里是我最初为支持Chrome功能而最初添加的用于处理COR的ASP.NET Core 3.1 Startup.cs代码

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors();
    ...
}

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

为什么我的Chrome扩展程序允许通话,而Firefox不允许?我还可以尝试解决哪些特定于Firefox的错误

解决方法

我误解了需要添加到manifest.json的{​​{1}}部分中的内容。我需要包括我希望调用的URL匹配模式,而不是原始URL。

permissions

我已更新为仅在我的站点(而非呼叫站点)上仅"permissions": [ "https://tf2metrics.azurewebsites.net/*",... ],个呼叫,并且现在可以在Firefox上运行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。