首页 > 解决方案 > Chrome 扩展 *Background* 脚本访问 XMLHttpRequest 已被 CORS 策略阻止

问题描述

我发布了一个 Chrome 扩展程序,幸运的是它拥有相当大的用户群(数千名用户)。

后台页面连接到我的服务器以验证他们的订阅。

对于约 95% 的用户来说,这是按预期工作的,在我测试过的每台机器上,它都按预期工作。

根据https://developer.chrome.com/extensions/xhr的说法,“只要扩展程序请求跨域权限,在扩展程序的后台页面或前台选项卡中执行的脚本就可以与其源之外的远程服务器通信。” 我的 manifest.json 在权限中指定了我的服务器域,而且,这似乎对绝大多数用户都有效,没有问题。

有时我会收到被阻止的用户的支持请求,并最终提供显示错误的后台页面开发控制台的屏幕截图

Access to XMLHttpRequest at 'https://www.mydomainname.com/check_subscription.php?guid=example-example-example-example' from origin 'chrome-extension://abcexampleexampleexample' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

什么(如果有的话)会导致某些用户的计算机出现此问题,而其他用户则没有?我对任何可能导致此问题的东西感兴趣,无论是我可以在我的代码中修复的东西,还是用户可以在他们的计算机上修复的东西,或者任何其他解决方案。

标签: google-chromegoogle-chrome-extensioncors

解决方案


您只需要使用 CORS 代理绕过 cors 策略,只需在您的 URL 前加上“https://cors-anywhere.herokuapp.com/”

例如,如果您在以下位置请求: https://www.mydomainname.com/check_subscription.php?, 然后

你必须请求: 'https://cors-anywhere.herokuapp.com/https://www.mydomainname.com/check_subscription.php?'

这个 URL 是 CORS 策略的代理,它会像魔术一样工作。


推荐阅读