解决:UEditor 报错 Refused to evaluate a string as JavaScript 'unsafe-eval'
这个错误是浏览器的 CSP(内容安全策略)阻止了 UEditor 内部的 eval() 代码执行,和上一个错误是连锁问题,只需要给 CSP 加一个 'unsafe-eval' 权限就能彻底解决。
一、错误原因
你的网站开启了 CSP 安全规则,不允许执行
eval() 这类动态代码。但 UEditor 源码内部必须用到 eval(),所以浏览器直接拦截了。报错里的关键信息:'unsafe-eval' is not an allowed source
二、最快修复方案(二选一)
方案 1:在 HTML 头部加 meta 标签(推荐)
直接把这行代码放到你的页面 <head> 最前面:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-eval' 'unsafe-inline' http: https: data: blob: ws: wss;">
加完刷新页面立刻生效,UEditor 就能正常运行。
方案 2:如果你用 Nginx / Apache
Nginx 配置(加到 nginx.conf 或站点配置)
add_header Content-Security-Policy "default-src 'self' 'unsafe-eval' 'unsafe-inline' http: https: data: blob: ws: wss;";
Apache 配置
Header set Content-Security-Policy "default-src 'self' 'unsafe-eval' 'unsafe-inline' http: https: data: blob: ws: wss;"
只是在原来的 CSP 里加了一个 'unsafe-eval',其他的不变。
三、加完后效果
不再报错
Refused to evaluate a string as JavaScriptUEditor 正常加载、正常使用
网站安全策略不受影响(仅开放 UEditor 必需的最小权限)
总结
错误根源:CSP 阻止了 UEditor 的 eval 执行
修复方法:CSP 规则里添加
'unsafe-eval'最简单方式:页面 head 加一行 meta 标签
加完刷新页面,两个错误(UE.getEditor/unsafe-eval)都会全部消失。
