Access-Control-Allow-Origin镀铬扩展权限不起作用

时间:2014-04-11 12:08:34

标签: google-chrome-extension cors

我尝试在我的js代码中从内部网络服务器获取html页面,并解析它以制作书签。

目前我遇到了Access-Control-Allow-Origin问题,但设置了权限!

{
  "manifest_version": 2,

  "name": "test",
  "description": "test",
  "version": "1.0",
  "options_page":"config.html",
  "browser_action": {
    "default_popup": "test.html",
      "permissions": [
   "*://*/*"
  ],
 "content_security_policy": "script-src 'self' https://example.com; object-src 'self'"
      }
}

我尝试了以下示例中的代码:https://developer.chrome.com/extensions/xhr

var xhr = new XMLHttpRequest();
xhr.open("GET", "http://api.example.com/data.json", true);
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4) {
    // JSON.parse does not evaluate the attacker's scripts.
    var resp = JSON.parse(xhr.responseText);
  }
}
xhr.send();

但是我收到了错误

  

XMLHttpRequest无法加载http://api.example.com/data.json。没有   '访问控制允许来源'标题出现在请求的上   资源。 Origin' chrome-extension:// nnbpdlokhkemfjmfkmlfnjonmeaccdmo'   因此不允许访问。

我很丢失!

实际上我想这样做(这也不起作用):

function httpGet(url,user,pass)
{
    var xmlHttp = null;

    xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET",url, false );
    xmlHttp.setRequestHeader("Authorization", "Basic " + btoa(user + ":" +pass))
    xmlHttp.send( null );
   response= xmlHttp.responseText;
   startT=response.indexOf("menuData = [");
//alert(startT);
   Text=response.substr(startT+11 );
   Text=Text.substr(0,Text.indexOf("\n"));
   var obj = eval (Text)
   return Text
}

1 个答案:

答案 0 :(得分:1)

清单的permissions部分应该是一个独立的条目,不在browser_action内。查看manifest file format的文档。