如何禁用 Django CKEditor 4 的安全版本警告提示

如何禁用 Django CKEditor 4 的安全版本警告提示

本文详解在 django 项目中(使用 django-ckeditor 6.7.0)彻底关闭 ckeditor 4.22.1+ 版本升级提醒(如“this ckeditor 4.22.1 version is not secure…”)的正确方法,重点说明 `config.versioncheck = false` 的配置位置与生效机制。

CKEditor 4 自 4.22.0 版本起引入了内置的版本安全性检查机制,会在编辑器初始化时自动向官方 CDN 发起请求,比对当前加载版本与最新 LTS 版本,并在工具栏右下角弹出醒目的黄色警告提示(例如:“This CKEditor 4.22.1 version is not secure. Consider upgrading to the latest one, 4.24.0-lts.”)。该行为无法通过 Django 层面的 CKEDITOR_UPDATE_NOTIFICATION = False 或 CKEditor 配置项 updateCheck: false / ignoreUpdates: true 关闭——因为这些参数在 CKEditor 4.22+ 中已被弃用或未被正确识别。

✅ 正确且唯一可靠的禁用方式是:在 CKEditor 的 JavaScript 运行时配置中显式设置 config.versionCheck = false

由于你使用的是 django-ckeditor,其底层仍基于 CKEditor 4 的原生 JS 加载逻辑,因此需将该配置注入到最终生成的 CKEditor 初始化脚本中。操作步骤如下:

造梦阁AI

造梦阁AI

AI小说推文一键成片,你的故事值得被看见

下载

  1. 修改 CKEDITOR_CONFIGS 配置,在 “default”(或其他启用的配置名)下添加 versionCheck: false(注意:不是字符串 “versionCheck”,而是布尔值 false):
CKEDITOR_CONFIGS = {
    "default": {
        "skin": "moono",
        "toolbar": "Custom",
        "allowedContent": True,
        "extraAllowedContent": "object[id,name,width,height];",
        "extraPlugins": "iframe",
        "iframe_attributes": {
            "sandbox": "allow-scripts allow-same-origin allow-popups allow-presentation allow-forms",
            "allowfullscreen": "",
            "loading": "lazy",
            "referrerpolicy": "no-referrer-when-downgrade",
        },
        # ✅ 关键新增:禁用版本检查(必须为小写 false,且位于顶层 config 对象)
        "versionCheck": False,  # ← 此处为 Python bool,django-ckeditor 会自动转为 JS false
        # 其余原有配置保持不变...
        "toolbar_Custom": [ ... ],
        "language": "en",
    }
}

⚠️ 注意事项:versionCheck: false 必须作为 CKEditor 配置对象的一级键(top-level property),不能嵌套在 toolbar_XXX 或其他子对象中;在 django-ckeditor 中,Python 的 False 会被正确序列化为 JavaScript 的 false,无需写成字符串 “false”;旧参数如 “updateCheck”: False、”ignoreUpdates”: True 或 CKEDITOR_UPDATE_NOTIFICATION = False 均无效,请移除以避免干扰;此设置仅禁用警告提示,不会升级 CKEditor 文件本身。若需真正提升安全性,建议后续手动升级 django-ckeditor 并同步更新其内置的 CKEditor 4 资源(如升级至支持 CKEditor 4.24.0-lts 的新版)。

  1. 清理浏览器缓存并重启 Django 开发服务器,访问 Admin 页面验证:警告条应完全消失,且编辑器功能不受影响。

? 补充说明:该机制本质是 CKEditor 4 内部通过 CKEDITOR.config.versionCheck 控制是否执行 checkVersion() 异步请求。设为 false 后,相关网络请求(如 https://cdn.ckeditor.com/…/version-check.json)将被跳过,从根源消除提示。

总结:禁用 CKEditor 4 安全警告的核心是 versionCheck: false —— 简洁、有效、兼容所有 django-ckeditor ≥ 5.x 版本。请优先确保配置位置正确,并配合实际版本升级计划,兼顾开发体验与长期安全性。

https://www.php.cn/faq/2013521.html

发表回复

Your email address will not be published. Required fields are marked *