【问题标题】:Chrome extension content security policy and permissionsChrome 扩展内容安全策略和权限
【发布时间】: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


【解决方案1】:

这里发生了很多事情——我可以说谷歌建议你尽可能从扩展而不是从互联网上提供 JS(所以如果你需要 jQuery,你可以将它与你的扩展捆绑在一起)。关于您报告的具体错误,只有第二个content_security_policy 生效。您可以在their documents 中看到,他们只在清单中指定了这些属性之一。

为了解决你所面临的错误,我相信你想要:

"content_security_policy": "script-src 'self' https://myjsonserver.com https://static.twilio.com; object-src 'self'"

【讨论】:

猜你喜欢
  • 2013-02-01
  • 2021-09-24
  • 2013-12-23
  • 2014-06-06
  • 2014-10-26
  • 1970-01-01
  • 2020-02-28
  • 2012-09-10
  • 1970-01-01
相关资源
最近更新 更多