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:
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier
{
protected $except = [
'/api/*',
];
}
Dadurch werden alle Routen, die mit /api beginnen, von der CSRF-Token-Überprüfung ausgeschlossen.
Alternative Lösung für Nicht-API-Routen
Wenn Routen von ausgeschlossen werden Da der CSRF-Schutz nicht geeignet ist, können Sie die CSRF-Überprüfung für bestimmte Methoden innerhalb einer Routengruppe deaktivieren. Zum Beispiel:
Route::group(['middleware' => 'web'], function () {
Route::post('/my-route', 'MyController@store')->withoutMiddleware('verify-csrf-token');
});
Dadurch wird die CSRF-Token-Überprüfung für die POST-Anfrage an /my-route deaktiviert.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3