Chrome不会加载jquery或soundcloud api

时间:2014-07-19 05:26:32

标签: javascript jquery google-chrome google-chrome-extension soundcloud

我正在尝试构建chrome扩展,但出于某种原因,我似乎无法向SoundCloud发出API请求或加载Jquery。

我知道这是因为:

我将加载jquery:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

在我的控制台中,我会收到

Failed to load resource: net::ERR_FAILED 
chrome-extension://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js

同样的事情发生在soundcloud api上:

chrome-extension://api.soundcloud.com/tracks?q=buskers&client_id=xxxxxxxxxx&format=json&_status_code_map[302]=2

为什么chrome-extension//会一直停留在网址前面,如何阻止它?

2 个答案:

答案 0 :(得分:3)

根据内容脚本策略(CSP),脚本资源只能从扩展程序包中加载。这将使扩展更安全,并确保扩展只执行您批准的代码。

解决方案1:下载特定版本的jQuery文件,将其包含在您的包中,然后将其加载到文档中。

<script src="js/jquery.1.11.1.min.js"></script>

解决方案2:实际上,您可以通过在清单文件中定义资源来源的白名单来放宽限制。如果由于某些原因需要加载外部js文件,可以参考this以获取更多详细信息。

"content_security_policy": "script-src 'self' https://ajax.googleapis.com https://api.soundcloud.com/tracks?q=buskers&client_id=xxxxxxxxxx&format=json&_status_code_map[302]=2; object-src 'self'"

注意:

白名单资源仅允许通过以下协议加载: HTTPS chrome-extension chrome-extension-resource 。如果要采用白名单解决方案,请使用https加载外部库。

如果要在白名单中定义多个域,请使用空格将域彼此分开。

"content_security_policy": "script-src 'self' https://domain1.com https://domain2.com;"

答案 1 :(得分:1)

试试这个

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>