我已经测试了我所看到的一切,但它对我不起作用,我正在使用的dropzone与laravel和我的问题是,它显示了419错误,我知道这意味着什么,这是关于csrf令牌,但我不能修复它。
我的HTML代码是这样的:
<div id="my-dropzone" class="dropzone"></div>
我的javascript代码是这样的:
Dropzone.autoDiscover = false;
$(document).ready(function(){
$('#my-dropzone').dropzone({
url: 'http://54.161.128.196/pre_image/store',
headers: {
'X-CSRF-TOKEN': $('meta[name="token"]').attr('content')
},
method: 'post',
dictResponseError: 'Error uploading file!'
});
});
我的Laravel路线:
Route::post('/pre_image/store', 'Pre_ImageController@store');
我把这个放在中间件中,看看是否可以删除419错误:
它位于VerifyCsrfToken中间件中
protected $except = [
'pre_image/store'
];
它没有工作,我有csrf令牌在 meta如下:
<meta name="csrf-token" content="{{ csrf_token() }}">
这是错误的屏幕截图:
所以我想知道是什么问题,为什么它显示419错误,如果它的路由被禁用,以验证令牌,甚至它有令牌分配?
谢谢!
2条答案
按热度按时间0mkxixxg1#
我在使用Dropzone时也遇到过类似的问题,最后我把头文件拉到页面顶部的ajax函数中,而不是DZ头文件部分,这使得任何普通的ajax请求都可以有正确的CSRF。
试试这个:
ghhkc1vu2#
如果其他人在表单中上传图像时遇到这个问题,并且上面的解决方案不起作用,那么我的解决方案是:我找到了在网页上生成src数据的Javascript代码。
我的情况是这样的:
问题是它默认为PNG文件,这是非常大的。如果你改变它如下,你会有一个小得多的文件,这将是更容易上传。
这将产生一个小得多的上传文件。我的问题是,如果我试图上传超过3张图片,我会得到错误信息。如果质量不够好,改变0.7到0.8。