Chrome扩展程序内容 - 安全策略

时间:2013-02-16 19:59:59

标签: javascript html5 google-chrome google-chrome-extension content-security-policy

我的扩展中需要动态加载代码。我写这个加载它 -

    var se = document.createElement('script');
se.setAttribute('type', 'text/javascript');
se.appendChild(document.createTextNode(code));
document.getElementsByTagName('head').item(0).appendChild(se);

这是我在manifest.js中的安全策略 -

 "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"

这会引发javascript错误 -

 "Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self' 'unsafe eval'"

我的问题是 - 为什么不放松?我明确地在清单中添加了一行以允许不安全的逃避。

2 个答案:

答案 0 :(得分:2)

我认为你使用的eval不会导致错误。通过将<script>块注入文档的head,您似乎违反了执行内联JavaScript的策略。

根据Content Security Policy上的文件:

  

不会执行内联JavaScript。此限制禁止内联块和内联事件处理程序(例如&lt; button onclick ='...'&gt;)。

另请注意:

  

内联脚本

     

没有放松对执行内联JavaScript的限制的机制。特别是,设置包含“unsafe-inline”的脚本策略将不起作用。

不必将代码置于内联中,而是必须采用一种方法,利用外部js文件来完成您正在尝试的任何内容。

答案 1 :(得分:1)

只需将此添加到您的manifest.json,为我工作。

 "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"