Chrome扩展程序“拒绝加载脚本,因为它违反了以下内容安全策略指令”
我正在尝试创建Chrome扩展程序,但我的JS都没有。 控制台显示此错误:
拒绝加载脚本’ https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js ‘,因为它违反了以下内容安全策略指令:“script-src’self’blob :filesystem:chrome-extension-resource:“。
为什么阻止我的jQuery运行?
您是否在清单JSON文件中允许它。 像这样的东西:
的manifest.json
{ "name": "My Extension", "content_scripts": [{ "js": ["jquery.min.js", "YourJavaScriptFile.js"], "matches": ["http://*/*", "https://*/*"] }] }
我遗漏了必需的字段,但只是给出了基本的想法。
正如Chome 网站上所述,有一个内容安全策略阻止您的脚本加载远程脚本:
允许通过HTTPS从example.com加载脚本资源的宽松策略定义可能如下所示:
“content_security_policy”:“script-src’self’https://example.com; object-src’self’”
所以在你的情况下, manifest.json
应该包含:
{ "name": "My Extension", "manifest_version": 2, "background":{ "scripts": [...] }, "content_security_policy": "script-src 'self' https://example.com; object-src 'self'", }
好吧,你不能使用CDN for js,你将不得不复制“ https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js ”的内容并创建一个新文件在你的js目录中并将其命名为jquery.min.js并将其中的所有内容粘贴到其中,然后在HTML文件头中删除包含此url的行并使用此代替
但请确保这是包含所提及url中所有数据的文件的写入路径
干杯,
内容安全策略是应用程序的另一个安全层。 它允许您定义从中加载任何样式,脚本或数据的所有原点。 对于每个样式,脚本,字体或连接,您需要指定要在应用程序中加载的域。 如果您使用的是另一个域的CDN jQuery,则需要在内容安全策略中指定此域。
如果您不想要这个增加的安全层,并希望从您希望的任何域加载样式或脚本,只需在index.html中添加以下元标记,并确保它位于任何导入之前。
这里*是通配符,可以访问任何域。 如果您想要这个增加的安全层,我建议您转到文档 ,该文档非常清楚如何在您的应用程序中指定要导入的所有域
我的HTML文件中有 。 删除脚本标记后,错误消失了。