javascript 如何处理写firefox插件时“CORS错误”?

vsmadaxz  于 2023-03-11  发布在  Java
关注(0)|答案(1)|浏览(213)

我正在尝试为Firefox编写一个插件,它可以跟踪几个网站的变化。要做到这一点,我需要维护一个网站列表,并使用以下代码执行“HTTP GET”来获取它们的最新内容:

function httpGet(theUrl)
{
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.withCredentials = true;
    xmlHttp.open( "GET", theUrl, false ); // false for synchronous request
    xmlHttp.setRequestHeader('Access-Control-Allow-Origin', '*');
    xmlHttp.send( null );
    return xmlHttp.responseText;
}

但是,我经常有以下错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin. (Reason: CORS request did not succeed). Status code: (null)

有人知道我应该如何解决这个问题吗?任何建议都将不胜感激,谢谢!

fykwrbwg

fykwrbwg1#

要允许跨源请求您正在开发的扩展,您需要在manifest.json中请求权限。文档可以在这里找到:权限和host_permissions。我引用一下,这赠款了以下权限:
XMLHttpRequest和fetch访问这些源,而没有跨源限制(甚至对于来自内容脚本的请求)。
您需要添加要在其上使用获取请求的网站,例如match patterns*://*.google.com/*将授予您通过HTTP和HTTPS获取google.com及其子域(如maps.google.com)的请求权限。如果要请求所有网站的权限,可以使用特殊模式<all_urls>

相关问题