Javascript Chrome扩展内容安全策略和权限
我正在尝试做一个Chrome扩展,但我在内容安全策略方面遇到了问题 我在popup.js中创建了一个popup.html,在header中调用了一个json调用。我还在远程服务器上添加了另一个.js文件,因为它是外部服务的api 我尝试了manifest.json的所有功能Javascript Chrome扩展内容安全策略和权限,javascript,api,google-chrome-extension,twilio,google-chrome-app,Javascript,Api,Google Chrome Extension,Twilio,Google Chrome App,我正在尝试做一个Chrome扩展,但我在内容安全策略方面遇到了问题 我在popup.js中创建了一个popup.html,在header中调用了一个json调用。我还在远程服务器上添加了另一个.js文件,因为它是外部服务的api 我尝试了manifest.json的所有功能 "permissions": [ //"optional_permissions": [ "http://*.myjsonserver.com/", "http://*.twilio.com/
"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 inspector上发现了这个错误
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上
我尝试了所有这些,但是我迷路了,我没有任何线索。这里发生了很多事情-我可以说,谷歌建议你尽可能从扩展服务JS,而不是从互联网服务JS(因此如果你需要jQuery,你可以将其与扩展捆绑在一起)。关于您报告的特定错误,只有第二个
内容安全策略
生效。您可以看到,它们只在清单中指定这些属性中的一个
要解决您面临的错误,我相信您需要:
"content_security_policy": "script-src 'self' https://myjsonserver.com https://static.twilio.com; object-src 'self'"
这里发生了很多事情——我可以说Google建议您尽可能从扩展服务JS,而不是从互联网服务JS(因此,如果您需要jQuery,您可以将其与扩展捆绑在一起)。关于您报告的特定错误,只有第二个
内容安全策略
生效。您可以看到,它们只在清单中指定这些属性中的一个
要解决您面临的错误,我相信您需要:
"content_security_policy": "script-src 'self' https://myjsonserver.com https://static.twilio.com; object-src 'self'"
删除csp,您只需要http://*.myjsonserver.com/“权限。不要加载远程脚本,使用json和本地脚本来解析它。不要从内容脚本中执行XHR(不确定在哪里包括
twilio.min.js
):后台和弹出窗口应该可以正常工作。我应该从twilio加载远程js,我没有其他选择。我在Twilio代码中看到他们正在调用另一个js文件。我还发现我不能在远程服务器上发出jQuery ajax请求,但我可以执行纯javascriptxhr=new XMLHttpRequest()代码>有什么区别,为什么我不能用jQuery调用ajax,但可以用XMLHttpRequest调用?删除csp,您只需要“http://*.myjsonserver.com/”
权限。不要加载远程脚本,使用json和本地脚本来解析它。不要从内容脚本中执行XHR(不确定在哪里包括twilio.min.js
):后台和弹出窗口应该可以正常工作。我应该从twilio加载远程js,我没有其他选择。我在Twilio代码中看到他们正在调用另一个js文件。我还发现我不能在远程服务器上发出jQuery ajax请求,但我可以执行纯javascriptxhr=new XMLHttpRequest()代码>有什么区别,为什么我不能用jQuery调用ajax,但可以用XMLHttpRequest调用?使用https:
将远程脚本列为白名单(或者最好将其与扩展捆绑在一起)。使用https:
将远程脚本列为白名单(或者最好将其与扩展捆绑在一起)。