Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann der 419-Statuscode für POST- und PUT-Methoden in Laravel aufgrund des CSRF-Schutzes aufgelöst werden?

Wie kann der 419-Statuscode für POST- und PUT-Methoden in Laravel aufgrund des CSRF-Schutzes aufgelöst werden?

Linda Hamilton
Linda HamiltonOriginal
2024-10-18 20:35:31949Durchsuche

How to Resolve 419 Status Code for POST and PUT Methods in Laravel Due to CSRF Protection?

Laravel-API gibt einen 419-Statuscode für POST- und PUT-Methoden zurück

Wenn Sie versuchen, RESTful-APIs mit Laravel zu entwickeln, stoßen Sie möglicherweise auf einen 419-Statuscode für POST- und PUT-Methoden Methoden. Dieses Problem ist auf den CSRF-Schutz von Laravel zurückzuführen, der darauf abzielt, Cross-Site-Request-Forgery-Angriffe (CSRF) zu verhindern.

Ursache

Die web.php-Routen von Laravel sind standardmäßig durch CSRF-Tokens geschützt. Mit CSRF-Tokens kann sichergestellt werden, dass eine Anfrage von einer legitimen Quelle und nicht von einem böswilligen Benutzer stammt. Wenn POST- oder PUT-Anfragen nicht das richtige CSRF-Token enthalten, gibt Laravel einen 419-Statuscode zurück.

Lösung 1: Routen vom CSRF-Schutz ausschließen

Wenn Sie web.php-Routen für die API verwenden Endpunkte können Sie vom CSRF-Schutz ausschließen, indem Sie sie der Eigenschaft $exclusive der VerifyCsrfToken-Middleware hinzufügen.

<code class="php">namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        'api/*', // Exclude all API routes from CSRF protection
    ];
}</code>

Lösung 2: Verwenden Sie api.php für API-Routen

Wenn ja Bei Verwendung von Laravel Version 5.4 oder höher wird empfohlen, die Datei api.php für API-Routen zu verwenden. In api.php definierte Routen werden automatisch vom CSRF-Schutz ausgeschlossen.

Lösung 3: Deaktivieren Sie den CSRF-Schutz für bestimmte Methoden

Sie können den CSRF-Schutz für bestimmte Methoden innerhalb einer Routengruppe deaktivieren.

<code class="php">Route::group(['middleware' => ['api', 'without_csrf_token']], function () {
    Route::post('/store', 'RestController@store');
    Route::put('/update/{id}', 'RestController@update');
});</code>

Fazit

Indem Sie Routen vom CSRF-Schutz ausschließen oder ihn für bestimmte Methoden deaktivieren, können Sie das Problem mit dem Statuscode 419 lösen. Denken Sie daran, den CSRF-Schutz nur bei Bedarf zu deaktivieren, da es sich um eine wichtige Sicherheitsmaßnahme für vom Benutzer übermittelte Formulare handelt.

Das obige ist der detaillierte Inhalt vonWie kann der 419-Statuscode für POST- und PUT-Methoden in Laravel aufgrund des CSRF-Schutzes aufgelöst werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn