Maison >développement back-end >tutoriel php >Comment résoudre le code d'état 419 pour les méthodes POST et PUT dans Laravel en raison de la protection CSRF ?

Comment résoudre le code d'état 419 pour les méthodes POST et PUT dans Laravel en raison de la protection CSRF ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-18 20:35:311038parcourir

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

L'API Laravel renvoie un code d'état 419 sur les méthodes POST et PUT

Lorsque vous essayez de développer des API RESTful à l'aide de Laravel, vous pouvez rencontrer un code d'état 419 sur POST et PUT méthodes. Ce problème provient de la protection CSRF de Laravel, qui vise à empêcher les attaques de falsification de requêtes intersites (CSRF).

Root Cause

Les routes web.php de Laravel sont protégées par défaut par des jetons CSRF. Les jetons CSRF sont un moyen de garantir qu'une requête provient d'une source légitime et non d'un utilisateur malveillant. Lorsque les requêtes POST ou PUT ne contiennent pas le bon jeton CSRF, Laravel renvoie un code d'état 419.

Solution 1 : exclure les routes de la protection CSRF

Si vous utilisez les routes web.php pour l'API points de terminaison, vous pouvez les exclure de la protection CSRF en les ajoutant à la propriété $sauf du middleware 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>

Solution 2 : utilisez api.php pour les routes API

Si vous êtes en utilisant Laravel version 5.4 ou supérieure, il est recommandé d'utiliser le fichier api.php pour les routes API. Les routes définies dans api.php sont automatiquement exclues de la protection CSRF.

Solution 3 : Désactiver la protection CSRF pour des méthodes spécifiques

Vous pouvez désactiver la protection CSRF pour des méthodes spécifiques au sein d'un groupe de routes.

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

Conclusion

En excluant les routes de la protection CSRF ou en la désactivant pour des méthodes spécifiques, vous pouvez résoudre le problème du code d'état 419. N'oubliez pas de désactiver la protection CSRF uniquement lorsque cela est nécessaire, car il s'agit d'une mesure de sécurité importante pour les formulaires soumis par les utilisateurs.

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