Pourquoi Laravel Api de revenir 419 code d'état sur le POST et METTRE la Méthode?
Je suis en train de créer une api Restful en utilisant laravel et de créer mon contrôleur à l'aide d' php artisan faire:contrôleur de RestController et c'est mon Code de contrôleur:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class RestController extends Controller
{
private $arr = array(
array("name"=>"jon", "family"=>"doe"),
array("name"=>"jhon", "family" => "doue")
);
public function index(){
return json_encode($this->arr);
}
public function store(Request $request){
return "oops!!";
}
public function update (Request $request, $id){
return "test";
}
}
et j'ai ajouter cette ligne de code pour créer cette route dans mon routes/web.php fichier
Route::resource('person', 'RestController');
quand j'essaie de tester cette api sur GET /personne du bon travail, mais sur le post et de le mettre je suis 419 code d'état de laravel.
- peut-être validation se trompe jamais, ou si son psot demande alors jeton pas ajouté
- il n'y a pas de validation sur mon contrôleur. qu'est-ce que le jeton qui je dois ajouter
- Avez-vous défini des routes pour la requête POST ?
- non... je utiliser de la route::ressources
Vous devez vous connecter pour publier un commentaire.
si vous développez des api rest préférable de ne pas ajouter de jeton .si vous utilisez 5.4 ou 5.5, vous pouvez utiliser api.php au lieu de web.php .Dans api.php vous n'avez pas besoin de jeton verifcation sur requête post.
si vous utilisez web.php ensuite, vous exculde jeton .Voici la documentation officielle
À l'exclusion des URIs De Protection CSRF
Parfois, vous pouvez exclure un ensemble d'Uri de la protection CSRF. Par exemple, si vous utilisez la Bande à traiter les paiements et utilisent leur webhook système, vous devrez exclure de votre Bande webhook gestionnaire d'itinéraire à partir de protection CSRF depuis Bande ne savent pas ce qu'jeton CSRF pour envoyer à vos itinéraires.
En règle générale, vous devez placer ces types de routes à l'extérieur de la web middleware groupe que le RouteServiceProvider s'applique à toutes les routes dans la routes/web.php fichier. Cependant, vous pouvez également exclure les routes en ajoutant leurs Uri de dollars, sauf les biens de la VerifyCsrfToken middleware:
de référence
https://laravel.com/docs/5.5/csrf
Conformément à ma Connaissance, il existe deux méthodes pour résoudre ce
Méthode 1:- Ajout Du Jeton CsrF
Méthode 2:- Exclure les Uri de la protection CSRF
Comment utiliser
Méthode 1:- Ajouter une variable à votre requête POST.
Exemple d'Ajax
Exemple, si vous utilisez des formulaires
De la méthode 2
Il y a un fichier nommé "VerifyCsrfToken' dans l'emplacement suivant
Ajouter votre URL dans la méthode suivante
Quand utiliser
Si vous êtes le propriétaire(contrôle total) de l'API, utilisez la Méthode 1, en tant que JETON CSRF renforce la sécurité de votre application.
Si vous ne parvenez pas à ajouter un jeton CSRF comme dans le cas si vous utilisez un tiers de l'API, webhooks etc aller pour la Méthode 2.