我创建了一个包含CKEditor的引擎。
在我的虚拟应用程序中,form.cktext_area可以正常工作并且可以正常渲染,但是当我尝试上传图像时,出现以下异常:
Ckeditor :: PicturesController#create中的ActionController :: InvalidAuthenticityToken
这是因为我在引擎内使用CKEditor进而导致了某些身份验证/保护问题吗?
谢谢
答案 0 :(得分:1)
您必须随请求一起发送csrf令牌,简单的方法是在每个ajax请求中添加csrf令牌:
document.addEventListener('turbolinks:load', function () {
var csrfToken = document.querySelector('meta[name="csrf-token"]').getAttribute('content')
if (csrfToken) {
var obj = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(){
var res = obj.apply(this, arguments);
this.setRequestHeader('X-CSRF-Token', csrfToken);
return res;
}
}
})
答案 1 :(得分:0)
并不是一个真正的答案,但是从我的引擎中删除CKEditor并再次重新添加它解决了这个问题(我想这是我的一些安装/配置问题引起的)。
尽管现在我正面临着新的问题...
NoMethodError (undefined method `gsub' for #<Pathname:/uploads/ckeditor/pictures/6/image.png> Did you mean? sub):
...。如果无法解决,我将作为新问题发布
仅需注意,将csrf令牌添加到每个请求中,但这对我来说没有什么区别。
感谢您的所有帮助和建议!