jmb*_*ier 7 javascript django post ckeditor
我使用django和ckeditor为TextEdits提供了所见即所得.我想使用CKEditor文件上传功能(在文件浏览器/图像对话框中),但是CKEditor发布的上传图像的POST只包含文件数据.
这是CSRF检查的问题.我在CKEditor文档中找不到并找到一个地方来更改文件上传的POST数据,在POST数据中添加django的csrf_token.
作为解决方法,我可以更改filebrowserUploadUrl参数以在上传URL中包含csrf数据,使用@csrf_exempt作为上载视图,并检查request.GET参数以检查csrf.但这个解决方案安全吗?
无论如何,如果有人知道如何在CKEditor文件上传POST数据中直接包含csrf令牌,我非常感兴趣...
您可以注册dialogDefinition事件,并完全重写上传选项卡,因此:
CKEDITOR.on('dialogDefinition', function (ev) {
  var dialogName = ev.data.name;
  var dialogDefinition = ev.data.definition;
  if (dialogName == 'image') {
    dialogDefinition.removeContents('Upload');
    dialogDefinition.addContents({
      title: "Upload",
      id: "upload",
      label: "Upload",
      elements: [{
        type: "html",
        html: '<form><input id="imageupload" type="file" name="files[]" />{%csrf_token%}</form>'
      }]
    });
   }
});
Run Code Online (Sandbox Code Playgroud)
这是我对现实世界版本的一种未经测试的简化,但希望它能够显示出这个想法.
这不会在图像对话框中设置URL字段,因此单击对话框上的"确定"将显示错误消息.您需要在成功上传时设置,因此:
CKEDITOR.dialog.getCurrent().getContentElement('info', 'txtUrl').setValue(theURL);
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           7394 次  |  
        
|   最近记录:  |