我在Chrome扩展程序中加载外部js文件时遇到问题。这是我的清单中的csp条目:
"content_security_policy": "script-src 'self' 'unsafe-eval' 'unsafe-inline' http://proto.office.atlassian.com; object-src 'self'"
以下是我在popup.html中调用脚本的方法:
<script src="http://proto.office.atlassian.com/prototypes.js"></script>
这是我得到的错误:
Refused to load the script 'http://proto.office.atlassian.com/prototypes.js' because it violates the following Content Security Policy directive: "script-src 'self'"
我已经确认我的CORS与服务器设置正确,我可以通过XMLHttpRequest提取脚本就好了,但我似乎无法通过脚本标签加载一个脚本或者一旦我抓住它就评估它。任何帮助将不胜感激:)
答案 0 :(得分:2)
您的清单中的content security policy必须明确允许外部脚本。
如果您需要一些外部JavaScript或对象资源,您可以通过将安全来源列入白名单来放宽策略,以便接受脚本......
允许通过HTTPS从example.com加载脚本资源的宽松策略定义可能如下所示:
"content_security_policy":"script-src 'self' https://example.com; object-src 'self'"
脚本只能通过HTTPS加载到扩展中,因此您必须通过HTTPS加载jQuery CDN资源:
<script src="https://ajax.googleapis.com/..."></script>
{
"manifest_version": 2,
"name": "One-click Kittens",
"description": "This extension demonstrates a 'browser action' with kittens.",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'"
}