Laravel - CK 编辑器在上传图像时返回 419 http 状态

Posted

技术标签:

【中文标题】Laravel - CK 编辑器在上传图像时返回 419 http 状态【英文标题】:Laravel - CK Editor returns 419 http status while uploading image 【发布时间】:2018-08-27 00:31:45 【问题描述】:

我想使用 ck 编辑器存储我的图像。但即使我将 csrf 令牌设置为请求标头,它也会返回 419 http 状态。

let token = document.head.querySelector('[name=csrf-token]').content,
document.querySelector('#article_editor').on('fileUploadRequest', function (evt) 
    var xhr = evt.data.fileLoader.xhr;
        xhr.setRequestHeader('Cache-Control', 'no-cache');
        xhr.setRequestHeader('X-File-Name', this.fileName);
        xhr.setRequestHeader('X-File-Size', this.total);
        xhr.setRequestHeader('X-CSRF-Token', token);
       xhr.send(this.file);

    // Prevented the default behavior.
       evt.stop()
);

我该如何解决这个问题?

我已经在 head 标签之间设置了 csrf 元数据。尽管如此,我还是不断收到错误..

<head>
...
<meta name="csrf-token" content=" csrf_token() ">
...
</head>

【问题讨论】:

Laravel 5.5 ajax call 419 (unknown status)的可能重复 【参考方案1】:

你应该这样做:

 filebrowserUploadUrl: "route('ckeditor.upload', ['_token' => csrf_token() ])",
 filebrowserUploadMethod: 'form'

【讨论】:

【参考方案2】:

将此添加到您的刀片文件中:

<meta name="csrf-token" content=" csrf_token() ">

在Js文件中这样添加

simpleUpload: 
      uploadUrl: 'your_url?_token='+document.querySelector('meta[name="csrf-token"]').getAttribute('content')
    

更多详情请查看此链接:https://ckeditor.com/docs/ckeditor5/latest/features/image-upload/simple-upload-adapter.html

【讨论】:

【参考方案3】:

只需添加刀片即可:

<meta name="csrf-token" content=" csrf_token() ">

然后在您的 simpleUpload 配置中(如果您使用它):

simpleUpload: 
      uploadUrl: '/* your path */',
      headers: 
        'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
      
    

【讨论】:

【参考方案4】:

我遇到了类似的问题。我确实将上传 URL 添加到 VerifyCsrfToken.php (app/Http/Middleware)。在这个文件中,我添加了 'upload-image/'。这可以解决你的问题。但是,在没有 CSRF 的情况下发布数据可能会产生风险。

【讨论】:

以上是关于Laravel - CK 编辑器在上传图像时返回 419 http 状态的主要内容,如果未能解决你的问题,请参考以下文章

ckeditor 5中的图像上传不适用于laravel 8

如何在文件上传期间保持页面可编辑(Laravel)?

在共享主机上托管时如何解决 laravel 的图像上传问题?

如何修复“文件上传失败。”使用任何图像上传验证时出错 - Laravel 5.7

Laravel 在图像上返回 404

Laravel在CKEDITOR上传图片