Rumah >pembangunan bahagian belakang >tutorial php >Apa yang Menyebabkan Kod Status 419 dalam Laravel untuk Kaedah POST dan PUT?

Apa yang Menyebabkan Kod Status 419 dalam Laravel untuk Kaedah POST dan PUT?

Linda Hamilton
Linda Hamiltonasal
2024-10-18 20:37:03245semak imbas

What Causes the 419 Status Code in Laravel for POST and PUT Methods?

Memahami Kod Status 419 untuk Kaedah POST dan PUT dalam API Laravel

Apabila membangunkan API RESTful menggunakan Laravel, adalah perkara biasa untuk menemui 419 kod status untuk kaedah POST dan PUT. Ralat ini berlaku disebabkan oleh proses pengesahan token CSRF Laravel.

Dalam Laravel 5.4 dan versi terdahulu, token CSRF didayakan untuk semua permintaan, termasuk kaedah POST dan PUT. Ini adalah untuk melindungi aplikasi daripada serangan pemalsuan permintaan silang tapak (CSRF). Secara lalai, token CSRF ditambahkan pada paparan sebagai medan tersembunyi dalam borang.

Apabila permintaan POST atau PUT diserahkan, Laravel menjangkakan untuk menerima token CSRF yang sah bersama-sama data permintaan. Jika token yang sah tidak ditemui, Laravel menjana pengecualian "419 CSRF token mispatch" dan mengembalikan respons kod status 419.

Mengecualikan Laluan daripada CSRF Protection

Kepada menyelesaikan isu ini, anda boleh mengecualikan laluan tertentu daripada pengesahan token CSRF. Dalam Laravel 5.5 dan ke atas, anda boleh menggunakan fail api.php dan bukannya web.php untuk laluan API dan pengesahan CSRF tidak didayakan secara lalai.

Jika anda menggunakan web.php untuk laluan API, anda boleh mengecualikan mereka daripada pengesahan token CSRF dengan menambahkan URI mereka pada harta $except bagi perisian tengah VerifyCsrfToken. Contohnya:

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

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

class VerifyCsrfToken extends BaseVerifier
{
    protected $except = [
        '/api/*',
    ];
}</code>

Ini akan mengecualikan semua laluan bermula dengan /api daripada pengesahan token CSRF.

Penyelesaian Alternatif untuk Laluan Bukan API

Jika mengecualikan laluan daripada perlindungan CSRF tidak sesuai, anda boleh melumpuhkan pengesahan CSRF untuk kaedah tertentu dalam kumpulan laluan. Contohnya:

<code class="php">Route::group(['middleware' => 'web'], function () {
    Route::post('/my-route', 'MyController@store')->withoutMiddleware('verify-csrf-token');
});</code>

Ini akan melumpuhkan pengesahan token CSRF untuk permintaan POST ke /my-route.

Atas ialah kandungan terperinci Apa yang Menyebabkan Kod Status 419 dalam Laravel untuk Kaedah POST dan PUT?. 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