Soalan:
Saya sedang melaksanakan Panggilan AJAX dalam Laravel 5.5 tetapi menemui "419 (status tidak diketahui)" ralat. Walaupun tidak mempunyai borang pada halaman saya, saya mengesyaki isu itu terletak pada token CSRF. Bagaimanakah saya boleh menyelesaikan perkara ini?
Jawapan:
Pihak Pelanggan:
Dalam bahagian kepala HTML anda, masukkan berikut:
<meta name="csrf-token" content="{{ csrf_token() }}">
Ini menjana token CSRF unik yang pelayan akan gunakan untuk mengesahkan masuk permintaan.
Permintaan AJAX:
Ubah suai permintaan AJAX anda untuk memasukkan token CSRF dalam pengepala:
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
Ini memastikan pelayan boleh mengesahkan asal permintaan dan menghalang serangan CSRF.
Laravel Middleware (Pilihan):
Laravel secara automatik menggunakan middleware CSRF untuk melindungi permintaan POST. Untuk melumpuhkan perisian tengah ini untuk laluan tertentu (cth., yang mengendalikan panggilan AJAX anda), tambahkan baris berikut pada perisian tengah AppHttpMiddlewareVerifyCsrfToken anda:
/** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ '/fetch-company/*', ];
Rujukan:
Atas ialah kandungan terperinci Ralat Laravel 5.5 AJAX 419: Bagaimana untuk Membetulkan Isu Token CSRF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!