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.

0voto

Diyata Points 45

Une ligne de code dans app/Exceptions/Handler.php a résolu mon problème.

public function render($request, Exception $exception)
{
    if ($exception instanceof Illuminate\Session\TokenMismatchException) {
        Artisan::call('cache:clear');
        Artisan::call('config:cache');
        return Redirect::back();
    }
    return parent::render($request, $exception);
}

0voto

Dans mon cas, un autre utilisateur de l'administration s'est connecté avec mon panneau d'administration et ne peut pas se connecter avec la nouvelle authentification laravel/ui et 419 a été envoyé.

Solution :

utilisez l'onglet incognito et ouvrez-le dans un nouvel onglet puis testez-le à nouveau.

0voto

Hmerman6006 Points 596

Dans mon cas, j'efface toutes les entrées avec javascript avant d'ouvrir un formulaire intégré dans une vue modale. Stupidement, je n'ai pas remarqué qu'il effaçait le fichier hidden valeurs des données, ce qui inclut les csrf symbolique. Malgré une exception dans mon conditionnel pour les entrées avec name='_token' . Bien sûr, mon code était splitting les noms des entrées avec des underscores dans des tableaux.
J'ai dû faire une exception pour hidden les entrées.

0voto

Watch-Online.in Points 15

Si vous avez ajouté @csrf, l'erreur se produit également. Vérifiez que vous n'avez pas bloqué les cookies...

Cliquez sur Cookies et autorisez le lien !

0voto

Abid_015 Points 317

2021, j'ai rencontré cette erreur alors que j'appliquais toutes les solutions ci-dessus, toutes mes routes envoyaient 419. Mon application fonctionnait bien sur localhost mais 419 sur le serveur. Puis j'ai trouvé la solution en réparant .env sur la production, remove sanctum variables de .env et définir 'secure' => env('SESSION_SECURE_COOKIE', null) dans config/session.php

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