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 状态的主要内容,如果未能解决你的问题,请参考以下文章
在共享主机上托管时如何解决 laravel 的图像上传问题?