尝试运行 CKEditor 时出现“未捕获的 EvalError:拒绝将字符串评估为 JavaScript,因为 'unsafe-eval' 不是允许的脚本源”

jim*_*ler 6 ckeditor content-security-policy

我在本地运行 Invenio 数字存储库框架,它带有一个用于运行 CKEditor 的节点模块,其富文本功能是该项目的基本要求。我曾尝试通过 Invenio 相当陈旧的文档修改我的配置但没有成功,所以我将采用老式的方法:通过以下方式加载 .js 文件:

<script src="/static/node_modules/ckeditor/ckeditor.js"></script>

它肯定正在尝试加载,但我在控制台中不断收到我以前从未遇到过的错误:

ckeditor.js:299 Uncaught EvalError: Refused to evaluate a string as JavaScript because 'unsafe-eval' is not an allowed source of script in the following Content Security Policy directive: "default-src 'self' 'unsafe-inline' 'unsafe-inline'".

除了 Chrome 扩展程序(该错误出现在所有浏览器的控制台中,而不仅仅是 Chrome),我在网上没有看到太多关于此错误的文档,而且我非常不确定如何继续。这本身就是一个不寻常的错误,但我也欢迎有关如何在 Invenio OOTB 中实例化 CKEditor 的一些说明。谢谢你的帮助。

spr*_*man 7

一个月过去了,你大概明白了。不过,以防万一,您看到的错误与您网站标题中设置的内容安全策略有关。除其他外,default-src 'self'说“不允许 eval”。解决方法是在策略中添加“unsafe-eval”。另请注意:您有两次“不安全内联”。第二个没有做任何事情,所以你可以用'unsafe-eval'替换它。另请注意: eval 被认为是不好的做法并且不安全——因此是“不安全的”。不过,我猜 ckeditor 只是为了好的目的而使用它。