【发布时间】:2016-01-22 03:47:50
【问题描述】:
我正在尝试做一个 Chrome 扩展程序,但内容安全策略存在问题。
我创建了一个带有 json 调用的 popup.html,其中 popup.js 在标题中调用。我还在远程服务器上添加了另一个 .js 文件,我无法包含它,因为它是外部服务的 api 车。
我用 manifest.json 尝试了一切。
"permissions": [ //"optional_permissions": [
"http://*.myjsonserver.com/",
"http://*.twilio.com/*",
"https://*.twilio.com/*"
//"http://*/*",
//"https://*/*"
],
我试过了。
"manifest_version": 2,
"content_security_policy": "connect-src 'self' http://myjsonserver.com; object-src 'self'", //connect-src
"content_security_policy": "script-src 'self' https://static.twilio.com; object-src 'self'"
或者我应该这样添加javascript吗?
"content_scripts": [
{
"matches": ["http://static.twilio.com/*"],
"js": ["jquery.js", "myscript.js"]
}
],
我在 google chrome 检查器上收到此错误。
Refused to load the script 'http://myjsonserver.com/get_token_cb.php?callback=jQuery210007401883858256042_144745747' because it violates the following Content Security Policy directive: "script-src 'self' https://static.twilio.com".
---------------
chrome-extension://static.twilio.com/libs/twiliojs/refs/6359b40/twilio.min.js Failed to load resource: net::ERR_FAILED
Failed to load resource: net::ERR_FAILED chrome-extension://static.twilio.com/libs/twiliojs/refs/6359b40/twilio.min.js
但没有任何效果,myjsonserver.com 它不在 https 服务器上,而是在我自己的服务器上。 twilio.com url 是从 javascript 访问 twilio api。
这只是为了测试,因为稍后它将在 background.js 上
我都试过了,但我迷路了,我不知道。
【问题讨论】:
-
移除 csp,你只需要
"http://*.myjsonserver.com/"权限。不要加载远程脚本,使用 json 和本地脚本来解析它。不要从内容脚本中执行 XHR(不确定在哪里包含twilio.min.js):只有背景和弹出窗口才能正常工作。 -
我应该从 twilio 加载远程 js,我别无选择。我在 Twilio 代码中看到他们正在调用另一个 js 文件。
-
我也只是发现我不能在远程服务器上发出 jQuery ajax 请求但我可以做一个纯 javascript
xhr = new XMLHttpRequest();有什么区别,为什么我不能用 ajax 调用jQuery 但我可以使用 XMLHttpRequest 吗?
标签: javascript api google-chrome-extension twilio google-chrome-app