我正在开发一个铬应用程序,将作为一个基于Cylon project的Arduino代码编辑器。一个js脚本(让我们称它为output.js)被生成,合并了led切换逻辑或任何我们想通过arduino实现的东西,并使用browserify编译它与其他节点依赖项。在他们的chrome extension example中,他们静态地引用了index.html中的这个脚本。
由于我正在开发一个编辑器,允许用户在arduino上编写任意代码,因此我将动态生成output.js的内容。我已经可以成功地生成output.js的内容了,并且我已经编写了一个函数来将数据注入到script标记中。然而,Google Chrome抛出了一个错误:
Refused to execute inline script because it violates the following Content Security Policy directive:
"default-src 'self' blob: filesystem: chrome-extension-resource:".
Either the 'unsafe-inline' keyword, a hash ('sha256-Mugizlz7AFKJ2hm6UA9ySY/31cKCVhLaEX9/QYpJIsk='),
or a nonce ('nonce-...') is required to enable inline execution.
Note also that 'script-src' was not explicitly set, so 'default-src' is used as a fallback.所以,我意识到我需要执行内联javascript,这可能是一个潜在的安全漏洞。我知道content scripts是专门为将自定义JS或CSS注入网页而设计的,但它们是在网站或网址的上下文中工作的。
我想修改dom,并在一个独立的chrome应用程序中注入自定义JS,而不是在一些网站或标签的上下文中工作的chrome扩展。从我在这个主题上所做的任何一点研究来看,我猜内容脚本对于chrome应用程序来说并不是一个有效的概念。然后我如何将javascript注入到用于chrome应用程序的DOM中。在这种情况下,我有哪些可能的内容脚本替代方案?
发布于 2017-05-08 15:44:55
在错误消息中包含散列的manifest.json文件可能会有所帮助。
例如,您的manifest.json可能如下所示:
{
"manifest_version": 2,
"name": "arduino editor",
"version": "1.0.0",
"minimum_chrome_version": "46",
"content_security_policy": "script-src 'self' 'sha256-Mugizlz7AFKJ2hm6UA9ySY/31cKCVhLaEX9/QYpJIsk='",
"background": {
"page": "background.html"
}
}有关更深入的信息,请参阅下面的帖子。
Chrome Extension - Content Security Policy - executing inline code
https://stackoverflow.com/questions/43842104
复制相似问题