4

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

    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'"

我的问题是 - 为什么不放松?我特别在 manifest 中添加了该行以允许不安全的 evals 。

4

2 回答 2

2

我不认为这是您的使用eval导致错误。您似乎违反了执行内联 JavaScript 的政策,将<script>块注入到head您的文档中。

根据有关内容安全策略的文档:

内联 JavaScript 将不会被执行。此限制禁止内联块和内联事件处理程序(例如 <button onclick='...'>)。

另请注意:

内联脚本

没有机制可以放宽对执行内联 JavaScript 的限制。特别是,设置包含“unsafe-inline”的脚本策略将无效。

您必须想出一种方法,利用外部js文件来完成您想要做的任何事情,而不是将您的代码内联。

于 2013-02-16T21:16:39.463 回答
1

只需将其添加到您的 manifest.json 中,对我有用。

 "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
于 2015-03-04T23:22:22.933 回答