Javascript 拒绝加载脚本Chrome扩展

Javascript 拒绝加载脚本Chrome扩展,javascript,php,json,google-chrome,google-chrome-extension,Javascript,Php,Json,Google Chrome,Google Chrome Extension,我正在尝试调用此站点并接收一个json对象。如何在给定CSP的chrome扩展中正确地与此API接口 错误:拒绝加载脚本“”,因为它违反了以下内容安全策略指令:“script src'self'chrome extension resource:” var word=“微笑”; var s=document.createElement(“脚本”); s、 src=”http://thesaurus.altervista.org/service.php?word=“+word+”&language

我正在尝试调用此站点并接收一个json对象。如何在给定CSP的chrome扩展中正确地与此API接口

错误:拒绝加载脚本“”,因为它违反了以下内容安全策略指令:“script src'self'chrome extension resource:”

var word=“微笑”;
var s=document.createElement(“脚本”);
s、 src=”http://thesaurus.altervista.org/service.php?word=“+word+”&language=en_US&output=json&key=REMOVEDMYKEY&callback=thesaurus”;
document.getElementsByTagName(“head”)[0]。appendChild;
函数叙词表(结果){
输出=”;
对于(键入result.response){
列表=结果。响应[键]。列表;
输出+=列表。同义词+“
”; } 如果(输出) document.getElementById(“同义词”).innerHTML=输出; }
请检查脚本是否声明了所需的权限,如下所述:

在您的清单中应该有如下内容:

"permissions": [
  "*http://thesaurus.altervista.org/*"
],

您显示的URL明确表示它可以返回JSON对象。回调(JSONP样式)是可选的

由于Chrome的扩展功能,您无法从该域使用JSONP。虽然您可以更改策略,但出于安全原因,禁止使用HTTP源

相反,您希望将JSON响应捕获为字符串并对其进行解析

您需要对该URL执行以下操作:

function thesaurus(word) {
  var xhr = new XMLHttpRequest();
  xhr.onload = function() {
    try {
      var result = JSON.parse(this.responseText);
      // Do something with the result
    } catch(e) {
      // Invalid JSON response
    }
  }
  xhr.onerror = function(e) {
    // Something bad happened
  }
  xhr.open(
    "GET",
    "http://thesaurus.altervista.org/service.php?word=" + word +
      "&language=en_US&output=json&key=REMOVEDMYKEY", 
    true
  );
  xhr.send();
}
您可能需要清单中的主机权限才能执行此操作,除非该服务器已从任何来源启用CORS(顺便说一句,这对于这样的API是有意义的)

function thesaurus(word) {
  var xhr = new XMLHttpRequest();
  xhr.onload = function() {
    try {
      var result = JSON.parse(this.responseText);
      // Do something with the result
    } catch(e) {
      // Invalid JSON response
    }
  }
  xhr.onerror = function(e) {
    // Something bad happened
  }
  xhr.open(
    "GET",
    "http://thesaurus.altervista.org/service.php?word=" + word +
      "&language=en_US&output=json&key=REMOVEDMYKEY", 
    true
  );
  xhr.send();
}
  "permissions": [
    "*://thesaurus.altervista.org/*"
  ],