每次我使用后台脚本调用另一个网站时fetch()
,都会收到此错误:Access to XMLHttpRequest at 'http://127.0.0.1:8080/api/allowedDomains' from origin 'chrome-extension://ngaahahncefaccijfgplkmbghbbolonk' has been blocked by CORS policy
编辑:
正如@ avalanche1在评论中指出的那样,在扩展安全性源中运行的扩展脚本不受网页和扩展内容脚本的CORS限制。根据Chrome关于此主题的文档:
通过将主机或主机匹配模式(或两者)添加到清单文件的权限部分,该扩展可以请求访问其来源之外的远程服务器。
{ "name": "My extension", ... "permissions": [ "https://www.google.com/" ], ... }
原始答案:
有关发生这种情况的更多信息,请参见https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS:
出于安全原因,浏览器限制了从脚本发起的跨域HTTP请求。例如,XMLHttpRequest和Fetch API遵循同源策略。这意味着使用这些API的Web应用程序只能从加载应用程序的同一来源请求资源,除非来自其他来源的响应包括正确的CORS标头。
长话短说,除非您允许该网站,否则您无法向其他网站提出请求。
如果您控制要向其发送请求的网站(因为localhost
在这种情况下可能是这种情况,我认为是这种情况),则可以将网站配置为使用正确的标头进行响应(有关详细信息,请参见上面的链接)。
如果您不控制该网站,那么除非提供服务的一方给您提供了一种以编程方式使用它的方式,否则无法从JS请求它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句