使用 laravel 的 Dropzone,它显示 419 错误

Dropzone with laravel, it displays 419 error

我已经测试了我所看到的所有内容,但它对我不起作用,我正在使用带 laravel 的 dropzone,我的问题是它显示 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'
];

它没有用,我在 meta 中有这样的 csrf 令牌:

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

这是错误的截图:

所以我想知道问题是什么,如果该路由被禁用以验证令牌,甚至它已分配令牌,为什么会显示 419 错误?

谢谢!

我在使用 Dropzone 时遇到了类似的问题。我最终将 headers 拉入页面顶部的 ajax 函数,而不是 DZ headers 部分。这允许任何一般 ajax 请求具有正确的 CSRF。

试试这个:

$.ajaxSetup({
  headers: {
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  }
});