【问题标题】:Laravel CSRF token mismatch exception. Sending "Put" request to a resource route via jQuery ajaxLaravel CSRF 令牌不匹配异常。通过 jQuery ajax 向资源路由发送“Put”请求
【发布时间】:2020-09-29 10:42:04
【问题描述】:

我需要向定义为的资源路由发送 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 令牌不匹配”。这是因为我使用了FormData() 吗?

【问题讨论】:

    标签: ajax laravel csrf laravel-6.2 csrf-token


    【解决方案1】:

    在刀片中添加 csrf

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-12-20
      • 2014-11-04
      • 2017-05-02
      • 2017-10-28
      • 2017-06-12
      • 2017-01-25
      • 2016-06-25
      • 2016-07-26
      • 2017-05-27
      相关资源
      最近更新 更多