Laravel 10 Jquery AJAX 中的 CSRF 令牌不匹配

问题描述 投票:0回答:1

P.S:我在 Stackoverflow 中看到了许多关于 CSRF 令牌不匹配的答案,并且我都尝试了它们。 所有现有答案都没有解决我的问题。所以,我不得不再次问一个新问题。

我正在使用 Laravel 10 以及 PHP 8.x 和 jQuery AJAX。

在我的 app.blade.php 中,我添加了

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

在我的资源\js ootstrap.js

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

在我的刀锋中

<script>
let data = { '_token': $('meta[name="csrf-token"]').attr('content') }
//Already tried '_token': "{{ csrf_token() }}"
$.ajax({
                    type: "POST",
                    url: url,
                    data: data,
                    headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
                    contentType: "application/json",
                    dataType: "json",
                    success: function(text) {}
})
</script>

在我的回复中,

有人可以帮我解决这个问题吗?

php jquery laravel laravel-10
1个回答
0
投票

您需要发出 AJAX 请求并传递 CSRF 令牌,如下所示:

$(document).on('change', '.users-select', function() {
    var csrfToken = $('meta[name="csrf-token"]').attr('content');
    $.ajax({
        url: update_sales_person,
        type: 'POST',
        dataType: 'json',
        headers: {
            'X-CSRF-TOKEN': csrfToken
        },
        data: { "sales_person": data},
        success: function(response) {
            if(response.success == true){
                successToast(response.message);
            }
        },
        error: function (xhr, status, error) {
            console.error('Error:', error);
        }
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.