我正在开发一个Chrome扩展程序,该程序使用了一个针对特定Web域定制的JavaScript库。这个库只能从特定域名调用(实际上是许可证问题)。
我想将这个js库加载到我的Chrome扩展程序中,但是扩展程序会出现内容安全策略(Content Security Policy)错误,因为要使用的库来自HTTP(而不是HTTPS)URL。我在StackOverflow上搜索过,唯一的选择是将该文件本地加载或通过消息传递加载。
请问有人能告诉我应该在我的
获取该js库的网站是例如
manifest.json:
我想将这个js库加载到我的Chrome扩展程序中,但是扩展程序会出现内容安全策略(Content Security Policy)错误,因为要使用的库来自HTTP(而不是HTTPS)URL。我在StackOverflow上搜索过,唯一的选择是将该文件本地加载或通过消息传递加载。
请问有人能告诉我应该在我的
background.js
和content.js
中添加什么代码,以及在manifest.json
中添加哪些权限吗?获取该js库的网站是例如
http://library.com/js/xy.js
。我知道在content.js中还应该有其他一些代码。如何从该域名加载代码?manifest.json:
{
"manifest_version": 2,
"name": "abc",
"version": "0.2",
"description": "abc",
"content_security_policy": "script-src 'self'; object-src 'self'",
"browser_action": {
"default_icon": "MM_logo_2009.png",
"default_popup": "tab/popup.html"
},
"background": {
"scripts": ["event.js"],
"persistent": false
},
"permissions": [
"http://library.com/js/xy.js",
"bookmarks",
"tabs",
"storage",
"http://*/*",
"https://*/*"
]
}
event.js:
var xhr = new XMLHttpRequest();
xhr.open("GET", "http://library.com/js/xy.js", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
// innerText does not let the attacker inject HTML elements.
document.getElementById("resp").innerText = xhr.responseText;
}
}
xhr.send();