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.

1voto

Isma'el Points 35

Je viens de passer par là et je rôde ici pour une réponse Dans mon cas, la solution était d'effacer l'historique du navigateur.

0voto

Splodge Points 11

Je viens d'avoir exactement le même problème et c'est parce que j'ai été complètement stupide. J'avais désactivé tous les champs du formulaire (et pas seulement le bouton d'envoi) via javascript avant de soumettre ledit formulaire ! Ceci, bien sûr, a eu pour conséquence que tous les éléments du formulaire n'ont pas été soumis (y compris les champs cachés). _token ) qui, à son tour, a fait apparaître l'erreur 419 !

J'espère que cela aidera quelqu'un à se sortir de quelques heures d'égarement !

Les entrées de formulaire désactivées n'apparaissent pas dans la requête

0voto

Jamie Ross Points 120

Vous ne pouvez pas faire un retour vide sur Laravel 5.6 ou plus. Laravel s'attend toujours à ce qu'une valeur soit retournée. (Je le sais par expérience). Ceci est principalement dû à la façon dont PHP 7 gère les retours vides.

0voto

Istiyak Amin Points 285

Vous avez ajouté le champ CSRF de manière incorrecte. Au lieu de @csrf vous devez utiliser csrf_field() así:

<form method="POST" action="/foo" >
    {{ csrf_field() }}
    <input type="text" name="name"/><br/>
    <input type="submit" value="Add"/>
</form>

0voto

Leo Nguyen Points 43

J'ai eu ce problème il y a longtemps. Je me souviens qu'il provoque la permission de storage/framework/sessions . Vous pouvez le modifier en chmod -R 0777 storage/framework/sessions commande. Cela a fonctionné pour moi.

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