自托管(S3 CDN部署)TinyMCE仍提示“domain not registered”问题求助
我来帮你排查这个问题,遇到“domain not registered”错误通常和TinyMCE的文件结构、域名许可或CDN配置有关,咱们一步步来解决:
1. 检查核心文件的存放路径是否正确
你当前引用的路径是https://cdn.******.com/slimmed/plugins/tinymce.min.js,这明显有问题——TinyMCE的核心tinymce.min.js应该和plugins、skins目录处于同级,而不是放在plugins文件夹里。
正确的S3文件结构应该是这样的:
cdn.******.com/ tinymce/ tinymce.min.js // 核心文件在这里 plugins/ // 插件目录和核心文件同级 advlist/ lists/ ...(你需要的其他插件) skins/ // 皮肤目录也和核心文件同级 ui/ oxide/ ...(皮肤相关文件)
调整文件结构后,把引用路径改成:
<script src="https://cdn.******.com/tinymce/tinymce.min.js" referrerpolicy="origin"></script>
2. 确认域名许可配置(针对商业版)
如果你使用的是TinyMCE商业自托管方案,即使部署在CDN上,也需要将嵌入TinyMCE的前端网站域名添加到你的TinyMCE账户的许可域名列表中(注意不是CDN域名)。
如果是使用免费开源的TinyMCE Community版本,要确保你没有在tinymce.init中添加api_key参数——一旦添加了API密钥,就会触发域名验证逻辑,导致“domain not registered”错误。
3. 配置正确的皮肤和插件路径(如果有自定义)
如果你的皮肤或插件放在了非默认路径,需要在初始化时明确指定:
tinymce.init({ selector: '.description', // 如果皮肤路径不是默认的,指定skin_url skin_url: 'https://cdn.******.com/tinymce/skins/ui/oxide', // 声明你需要加载的插件,TinyMCE会自动从plugins目录查找 plugins: 'advlist lists link' });
4. 检查S3 CDN的CORS设置
S3需要配置正确的CORS规则,允许你的前端域名访问TinyMCE资源。在S3控制台找到对应的存储桶,设置CORS规则如下:
<?xml version="1.0" encoding="UTF-8"?> <CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <CORSRule> <AllowedOrigin>https://your-frontend-domain.com</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> </CORSConfiguration>
替换your-frontend-domain.com为实际嵌入TinyMCE的网站域名。
5. 清除浏览器缓存后测试
有时候浏览器缓存了旧的资源或配置,导致加载异常。按下Ctrl+Shift+R(Windows)或Cmd+Shift+R(Mac)强制刷新页面,清除缓存后再验证是否还会出现错误。
内容的提问来源于stack exchange,提问作者Rav

