一、问题起因
众所周知,Chrome浏览器对跨域限制有一种很深的执念,在使用 XMLHttpRequest 或 fetch 访问外部网站时必须要目标服务器配合。令我惊喜的是,在谷歌官方文档中有专门的一篇文章讲述扩展程序解除跨域限制的方法。
二、功能测试
根据文档的说法,只要在 manifest.json 中填写 host_permissions 即可解除跨域限制,甚至支持使用通配符解除所有网站的跨域限制。
然而,不幸的是,当我完全按照谷歌提供的示例代码编写时,却提示被拦截。
三、希望破灭
经过5个小时的搜索,我在Chrome的官方博客中找到了一篇文章,彻底击碎了我的幻想。Changes to Cross-Origin Requests in Chrome Extension Content Scriptshttps://www.chromium.org/Home/chromium-security/extension-content-script-fetches/
As part of a broader Extension Manifest V3 effort to improve extension security, privacy, and performance, these cross-origin requests in content scripts will soon be disallowed.
翻译过来就是:
作为更广泛的扩展清单 V3 的一部分,为了提高扩展程序的安全性、隐私性和性能,这些内容脚本(content_script)中的跨域请求很快就会被禁止。
又是该死的安全性。