google-chrome - 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.
什么(如果有的话)会导致某些用户的计算机出现此问题,而其他用户则没有?我对任何可能导致此问题的东西感兴趣,无论是我可以在我的代码中修复的东西,还是用户可以在他们的计算机上修复的东西,或者任何其他解决方案。
解决方案
您只需要使用 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 策略的代理,它会像魔术一样工作。
推荐阅读
- python - Python / Tkinter - 从另一个函数单击按钮时选择所有文本内容并将其复制到剪贴板
- r - 按组计算多样性
- git - 如何将 xargs 与 git show --name-only 结合使用
- sql - 同一张表中的 SQL DATE 比较
- postgresql - Postgres 不断拒绝 Patroni 连接尝试
- encoding - 这是什么类型的编码?
- neo4j - 如何使用 neo4j Cypher 查询创建直方图输出?
- c++ - 如何在 g++ 中打印 __int128
- git - 删除不必要的 .keep 文件
- elixir - Elixir SFTP 无法在服务器上运行 - 密钥交换失败