解决: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',其他的不变。


三、加完后效果

  1. 不再报错 Refused to evaluate a string as JavaScript

  2. UEditor 正常加载、正常使用

  3. 网站安全策略不受影响(仅开放 UEditor 必需的最小权限)


总结

  1. 错误根源:CSP 阻止了 UEditor 的 eval 执行

  2. 修复方法:CSP 规则里添加 'unsafe-eval'

  3. 最简单方式:页面 head 加一行 meta 标签

加完刷新页面,两个错误(UE.getEditor/unsafe-eval)都会全部消失


遇到问题?请给我们留言

请填写您的电话号码,我们将回复您电话