我必须使用 ajax 完成 real-time table 但我仍然遇到一个错误,即 CSRF 令牌不匹配错误

I have to complete the real-time table using ajax but I am sticking with an error which is CSRF token mismatch error

我是一名 PHP 开发人员,目前正在根据我的任务转向 Laravel 框架,我必须使用 ajax 完成 real-time table 但是我遇到了一个错误,即 CSRF 令牌不匹配错误,请帮助我解决我仅发布简码的错误

ajax

$(document).ready(function(){
            $('.toggle-class').change(function() {

                var status = $(this).prop('checked') === true;
                var id = $(this).data('id');
                var csrf=$('meta[name="csrf-token"]').attr('content');



                $.ajax({
                    type: "POST",
                    dataType: "json",
                    url: '/package/status',
                    data: {'status': status, 'id': id, 'XSRF-TOKEN': csrf},
                    success: function(data){
                        console.log('success '+data);
                    }
                });

            })
        })

路由路径

Route::post('package/status', [App\Http\Controllers\PackageController::class,'status']);

控制器代码

 public function status(Request $request){


        $Package = package::find($request->id);

        $Package->status = $request->status;

        $Package->save();

        return response()->json(['success'=>'Status change successfully.']);
    }

我不知道为什么它在 headers 包含令牌时显示 CSRF 令牌不匹配一旦解决我可以采取一些 real-time 行动。

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

在您的 csrf 令牌主布局的 header 中添加此元标记,它将与您的 ajax 调用的 csrf 令牌相匹配,因此它有望解决您的问题。让我知道它是否有效。

$.ajax({
    type: "POST",
    dataType: "json",
    url: '/package/status',
    data: {'status': status, 'id': id, '_token': '{{ csrf_token() }}'},
    success: function(data){
    console.log('success '+data);
    }
});

XSRF-TOKEN更改为_token 并像这样更改数据 {{ csrf_token() }}

试试这个:

 data: {'status': status, 'id': id, '_token': '{{csrf_token()}}'},

只需为 csrf 变量使用 _token

        $(document).ready(function(){
            $('.toggle-class').change(function() {

                var status = $(this).prop('checked') === true;
                var id = $(this).data('id');
                var csrf=$('meta[name="csrf-token"]').attr('content');



                $.ajax({
                    type: "POST",
                    dataType: "json",
                    url: '/package/status',
                    data: {'status': status, 'id': id, '_token': csrf},
                    success: function(data){
                        console.log('success '+data);
                    }
                });

            })
        })