Laravel CSRF 令牌不匹配异常。通过 jQuery ajax 向资源路由发送 "Put" 请求

Laravel CSRF token mismatch exception. Sending "Put" request to a resource route via jQuery ajax

我需要向资源路由发送 PUT 请求,路由定义为:

Route::resource('posts','PostController');

我的代码像这样工作正常:

            var data = $(this).serializeArray();
            data.push( {name:'_token',value:"{{ csrf_token() }}" })
            $.ajax({
                type: "Put",
                url: _url,
                data: data,
                dataType: "json",
                success: function (response) {
                    if(response.status){
                        toastr.success(response.msg);
                    }
                    else{
                        toastr.warning(response.msg);
                    }
                },
            });

但是当我不得不通过路由发送文件时,问题就来了,为此我不得不将我的提交功能修改为:

          var data = new FormData(this);
          data.append("_token","{{ csrf_token() }}");
          var _url = $(this).attr('action');
          $.ajax({
            type: "Put",
            url: _url,
            data: data,
            dataType: "json",
            processData:    false,
            contentType:    false,
            success: function (response) {
              if(response.status){
               toastr.success(response.msg);
              }
            }

我遇到异常消息 "CSRF token Mismatch"。这是因为我用了 FormData() ?

将 csrf 添加到您的 blade

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

然后通过headers发送它以避免通过附加数据发送它

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

并删除此行 data.append("_token","{{ csrf_token() }}"); 并尝试