111 votes

Post request in Laravel - Erreur - 419 Désolé, votre session/ 419 votre page a expiré

J'ai installé Laravel 5.7

Ajout d'un formulaire dans le fichier \resources\views\welcome.blade.php

<form method="POST" action="/foo" >
    @csrf
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>
</form>

Ajouté au dossier \routes\web.php

Route::post('/foo', function () {
    echo 1;
    return;
});

Après avoir envoyé une requête POST :

419 Désolé, votre session a expiré. Veuillez rafraîchir et réessayer.

En version 5.6 il n'y avait pas de tel problème.

0 votes

Avez-vous essayé d'ajouter une redirection ? Au lieu de return; vous pouvez appeler return redirect()->back(); . D'après ce que je vois, l'application n'a rien à faire après la requête post. Peut-être pouvez-vous la rediriger vers une vue après avoir traité la requête.

1 votes

J'ai le même problème. Lorsque je passe à la session de base de données, cela se produit et lorsque je repasse à la session de base de données, cela se produit. file para SESSION_DRIVER en .env il fonctionne bien. Pourquoi la session basée sur la base de données ne fonctionne-t-elle pas ?

0 votes

J'ai copié votre code exact dans une nouvelle installation de Laravel 5.7. Cela a fonctionné. Il y a un problème ailleurs.

2voto

Kakada Neang Points 38

Bien que le formulaire ait @csrf il montre toujours 419 pages has expired

Je l'ai résolu après la mise à jour SESSION_SECURE_COOKIE à false dans config/session.php

'secure' => env('SESSION_SECURE_COOKIE', false)

que de vider le cache

2voto

kmiloangel Points 171

Dans mon cas, il s'agissait d'une disparition ?> à la fin de routes/web.php.

1voto

Mathieu Ferre Points 1502

Dans votre Http/Kernel.php

Essayez de commenter cette ligne :

\Illuminate\Session\Middleware\AuthenticateSession::class,

dans votre tableau de middleware web

cela pourrait être la racine de votre problème

1voto

Qasim Ali Points 277

Une mauvaise approche rapide est de se rendre à l'application \http\middleware\verifycsrftoken.php et ajouter la route dans la liste $except. La requête post sera ignorée pour la vérification du CSRF Token.

protected $except = [
    //
    'doLogin.aspx',
    'create_coupon',
];

1voto

Zia Points 136

En fait, CSRF est un jeton basé sur la session. Ajoutez votre route dans un groupe de routes et ajoutez un middleware qui contrôle les sessions.

web est un middleware par défaut dans Laravel et il peut contrôler les requêtes de session.

Route::group(array('middleware' => ['web']), function () {
  Route::post('/foo', function () {
     echo 1;
     return;
  });
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X