0

我为我的英语很抱歉,内容安全策略的getJSON

我在我的HTML这下面的代码:

<script type="text/javascript" src="plugin.js"></script> 

在我的JS:

$(document).ready(function() { 
     $.getJSON("https://api.twitch.tv/kraken/streams/"+"NameOfStreamer"+"?callback=?",function(c) { 

     if (c.stream == null) { 
      $("p").text("Stream offline, n'hésitez pas à me rejoindre sur les réseaux sociaux afficher ci-dessous."); 

     } else { 

      $("p").text("Stream online, rejoins moi sur Domingo.tv en cliquant sur le lien ci dessous"); 

     } 
    }); 
}); 

在我的清单:我得到:

Refused to load the script 'https://api.twitch.tv/kraken/streams/NameOfStreamer?callback=jQuery11120590793181443587_1429560015317&_=1429560015318' because it violates the following Content Security Policy directive: "script-src 'self' chrome-extension-resource:". 

我想知道我该如何解决这个问题。

+1

你做跨域Ajax请求。你需要jsonp或适当的CORS标题来允许它。 –

+0

不正确的重复。这里的问题是jsonp。它需要被丢弃。 – Xan

回答

1

你的问题是试图使用JSONP,这是不需要的。

您想接收数据,而不是要执行的脚本。如果远程服务器不允许它,则JSONP是避免无法进行跨域请求的技巧;但是,Chrome扩展程序有host permissions that bypass cross-domain restrictions

  1. 为您正在使用的API添加跨域权限。

    "permissions": [ 
        "activeTab", 
        "https://ajax.googleapis.com/*", 
        "https://api.twitch.tv/*" 
        ] 
    
  2. 调用API 回调参数:

    $.getJSON("https://api.twitch.tv/kraken/streams/"+"NameOfStreamer", 
        function(c) { 
        if (c.stream == null) { 
         /*...*/ 
        } 
        } 
    ); 
    
+0

所以,我试试这个代码,我没有相同的错误:XMLHttpRequest无法加载https://api.twitch.tv/kraken/streams/NameOfStreamer。请求的资源上没有“Access-Control-Allow-Origin”标题。因此,'chrome-extension:// ennobinmkifbonghaaoekogblngkcdja'不允许访问。 –

+0

在您的JS文件里面的Document.ready函数。您需要用上面的代码替换$ .getJSON方法,并按照您的要求处理成功。 –

+0

您是否添加了权限?之后您是否重新加载扩展程序? – Xan