我正在尝试为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)
有人知道我应该如何解决这个问题吗?任何建议都将不胜感激,谢谢!
1条答案
按热度按时间fykwrbwg1#
要允许跨源请求您正在开发的扩展,您需要在
manifest.json
中请求权限。文档可以在这里找到:权限和host_permissions。我引用一下,这赠款了以下权限:XMLHttpRequest和fetch访问这些源,而没有跨源限制(甚至对于来自内容脚本的请求)。
您需要添加要在其上使用获取请求的网站,例如match patterns:
*://*.google.com/*
将授予您通过HTTP和HTTPS获取google.com及其子域(如maps.google.com)的请求权限。如果要请求所有网站的权限,可以使用特殊模式<all_urls>
。