Maison >développement back-end >tutoriel php >Quelles sont les causes du code d'état 419 dans Laravel pour les méthodes POST et PUT ?

Quelles sont les causes du code d'état 419 dans Laravel pour les méthodes POST et PUT ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-18 20:37:03253parcourir

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

Comprendre le code d'état 419 pour les méthodes POST et PUT dans l'API Laravel

Lors du développement d'une API RESTful à l'aide de Laravel, il est courant de rencontrer le 419 code d'état pour les méthodes POST et PUT. Cette erreur se produit en raison du processus de vérification des jetons CSRF de Laravel.

Dans Laravel 5.4 et les versions antérieures, les jetons CSRF sont activés pour toutes les requêtes, y compris les méthodes POST et PUT. Il s'agit de protéger l'application contre les attaques de falsification de requêtes intersites (CSRF). Par défaut, les jetons CSRF sont ajoutés à la vue sous forme de champs masqués dans les formulaires.

Lorsqu'une requête POST ou PUT est soumise, Laravel s'attend à recevoir un jeton CSRF valide avec les données de la requête. Si un jeton valide n'est pas trouvé, Laravel génère une exception « 419 Incompatibilité de jeton CSRF » et renvoie une réponse de code d'état 419.

Exclusion des routes de la protection CSRF

À Pour résoudre ce problème, vous pouvez exclure certaines routes de la vérification du jeton CSRF. Dans Laravel 5.5 et supérieur, vous pouvez utiliser le fichier api.php au lieu de web.php pour les routes API, et la vérification CSRF n'est pas activée par défaut.

Si vous utilisez web.php pour les routes API, vous peut les exclure de la vérification des jetons CSRF en ajoutant leurs URI à la propriété $sauf du middleware VerifyCsrfToken. Par exemple :

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

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

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

Cela exclura toutes les routes commençant par /api de la vérification du jeton CSRF.

Solution alternative pour les routes non API

Si l'exclusion des routes de la protection CSRF ne convient pas, vous pouvez désactiver la vérification CSRF pour des méthodes spécifiques au sein d'un groupe de routes. Par exemple :

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

Cela désactivera la vérification du jeton CSRF pour la requête POST vers /my-route.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn