Verstehen des 419-Statuscodes für POST- und PUT-Methoden in der Laravel-API
Bei der Entwicklung einer RESTful-API mit Laravel stößt man häufig auf den 419 Statuscode für POST- und PUT-Methoden. Dieser Fehler tritt aufgrund des CSRF-Token-Verifizierungsprozesses von Laravel auf.
In Laravel 5.4 und früheren Versionen sind CSRF-Tokens für alle Anfragen aktiviert, einschließlich POST- und PUT-Methoden. Dies dient dazu, die Anwendung vor Cross-Site-Request-Forgery-Angriffen (CSRF) zu schützen. Standardmäßig werden CSRF-Tokens der Ansicht als versteckte Felder in Formularen hinzugefügt.
Wenn eine POST- oder PUT-Anfrage gesendet wird, erwartet Laravel, zusammen mit den Anfragedaten ein gültiges CSRF-Token zu erhalten. Wenn kein gültiges Token gefunden wird, generiert Laravel eine „419 CSRF-Token-Nichtübereinstimmung“-Ausnahme und gibt eine 419-Statuscode-Antwort zurück.
Routen vom CSRF-Schutz ausschließen
An Um dieses Problem zu beheben, können Sie bestimmte Routen von der CSRF-Token-Überprüfung ausschließen. In Laravel 5.5 und höher können Sie die Datei api.php anstelle von web.php für API-Routen verwenden, und die CSRF-Überprüfung ist standardmäßig nicht aktiviert.
Wenn Sie web.php für API-Routen verwenden, müssen Sie Sie können sie von der CSRF-Token-Überprüfung ausschließen, indem Sie ihre URIs zur $exclusive-Eigenschaft der VerifyCsrfToken-Middleware hinzufügen. Zum Beispiel:
<code class="php">namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier; class VerifyCsrfToken extends BaseVerifier { protected $except = [ '/api/*', ]; }</code>
Dadurch werden alle Routen, die mit /api beginnen, von der CSRF-Token-Überprüfung ausgeschlossen.
Alternative Lösung für Nicht-API-Routen
Wenn der Ausschluss von Routen vom CSRF-Schutz nicht geeignet ist, können Sie die CSRF-Überprüfung für bestimmte Methoden innerhalb einer Routengruppe deaktivieren. Zum Beispiel:
<code class="php">Route::group(['middleware' => 'web'], function () { Route::post('/my-route', 'MyController@store')->withoutMiddleware('verify-csrf-token'); });</code>
Dadurch wird die CSRF-Token-Überprüfung für die POST-Anfrage an /my-route deaktiviert.
Das obige ist der detaillierte Inhalt vonWas verursacht den Statuscode 419 in Laravel für POST- und PUT-Methoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!