Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menyelesaikan Kod Status 419 untuk Kaedah POST dan PUT dalam Laravel Kerana Perlindungan CSRF?

Bagaimana untuk Menyelesaikan Kod Status 419 untuk Kaedah POST dan PUT dalam Laravel Kerana Perlindungan CSRF?

Linda Hamilton
Linda Hamiltonasal
2024-10-18 20:35:311035semak imbas

How to Resolve 419 Status Code for POST and PUT Methods in Laravel Due to CSRF Protection?

API Laravel Mengembalikan Kod Status 419 pada Kaedah POST dan PUT

Apabila cuba membangunkan API RESTful menggunakan Laravel, anda mungkin menghadapi kod status 419 pada POST dan PUT kaedah. Isu ini berpunca daripada perlindungan CSRF Laravel, yang bertujuan untuk menghalang serangan pemalsuan permintaan merentas tapak (CSRF).

Punca Punca

Laluan web.php Laravel dilindungi oleh token CSRF secara lalai. Token CSRF ialah satu cara untuk memastikan bahawa permintaan datang daripada sumber yang sah dan bukan daripada pengguna yang berniat jahat. Apabila permintaan POST atau PUT tidak mengandungi token CSRF yang betul, Laravel mengembalikan kod status 419.

Penyelesaian 1: Kecualikan Laluan daripada Perlindungan CSRF

Jika anda menggunakan laluan web.php untuk API titik akhir, anda boleh mengecualikannya daripada perlindungan CSRF dengan menambahkannya pada harta $except bagi perisian tengah VerifyCsrfToken.

<code class="php">namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'api/*', // Exclude all API routes from CSRF protection
    ];
}</code>

Penyelesaian 2: Gunakan api.php untuk Laluan API

Jika anda menggunakan Laravel versi 5.4 atau lebih tinggi, adalah disyorkan untuk menggunakan fail api.php untuk laluan API. Laluan yang ditakrifkan dalam api.php dikecualikan secara automatik daripada perlindungan CSRF.

Penyelesaian 3: Lumpuhkan Perlindungan CSRF untuk Kaedah Tertentu

Anda boleh melumpuhkan perlindungan CSRF untuk kaedah tertentu dalam kumpulan laluan.

<code class="php">Route::group(['middleware' => ['api', 'without_csrf_token']], function () {
    Route::post('/store', 'RestController@store');
    Route::put('/update/{id}', 'RestController@update');
});</code>

Kesimpulan

Dengan mengecualikan laluan daripada perlindungan CSRF atau melumpuhkannya untuk kaedah tertentu, anda boleh menyelesaikan isu kod status 419. Ingat untuk hanya melumpuhkan perlindungan CSRF apabila perlu, kerana ia merupakan langkah keselamatan yang penting untuk borang yang diserahkan oleh pengguna.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Kod Status 419 untuk Kaedah POST dan PUT dalam Laravel Kerana Perlindungan CSRF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn