Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展内容安全策略和权限_Javascript_Api_Google Chrome Extension_Twilio_Google Chrome App - Fatal编程技术网

Javascript Chrome扩展内容安全策略和权限

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/

我正在尝试做一个Chrome扩展,但我在内容安全策略方面遇到了问题

我在popup.js中创建了一个popup.html,在header中调用了一个json调用。我还在远程服务器上添加了另一个.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 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请求,但我可以执行纯javascript
xhr=new XMLHttpRequest()有什么区别,为什么我不能用jQuery调用ajax,但可以用XMLHttpRequest调用?删除csp,您只需要
“http://*.myjsonserver.com/”
权限。不要加载远程脚本,使用json和本地脚本来解析它。不要从内容脚本中执行XHR(不确定在哪里包括
twilio.min.js
):后台和弹出窗口应该可以正常工作。我应该从twilio加载远程js,我没有其他选择。我在Twilio代码中看到他们正在调用另一个js文件。我还发现我不能在远程服务器上发出jQuery ajax请求,但我可以执行纯javascript
xhr=new XMLHttpRequest()有什么区别,为什么我不能用jQuery调用ajax,但可以用XMLHttpRequest调用?使用
https:
将远程脚本列为白名单(或者最好将其与扩展捆绑在一起)。使用
https:
将远程脚本列为白名单(或者最好将其与扩展捆绑在一起)。