ホームページ > バックエンド開発 > PHPチュートリアル > LaravelのPOSTメソッドとPUTメソッドでステータスコード419が発生する原因は何ですか?

LaravelのPOSTメソッドとPUTメソッドでステータスコード419が発生する原因は何ですか?

Linda Hamilton
リリース: 2024-10-18 20:37:03
オリジナル
250 人が閲覧しました

What Causes the 419 Status Code in Laravel for POST and PUT Methods?

Laravel API の POST および PUT メソッドの 419 ステータス コードを理解する

Laravel を使用して RESTful API を開発する場合、419 が発生するのが一般的ですPOST メソッドと PUT メソッドのステータス コード。このエラーは、Laravel の CSRF トークン検証プロセスが原因で発生します。

Laravel 5.4 以前のバージョンでは、CSRF トークンは POST メソッドや PUT メソッドを含むすべてのリクエストに対して有効です。これは、クロスサイト リクエスト フォージェリ (CSRF) 攻撃からアプリケーションを保護するためです。デフォルトでは、CSRF トークンはフォーム内の非表示フィールドとしてビューに追加されます。

POST または PUT リクエストが送信されると、Laravel はリクエスト データとともに有効な CSRF トークンを受信することを期待します。有効なトークンが見つからない場合、Laravel は「419 CSRF トークンの不一致」例外を生成し、419 ステータス コード応答を返します。

CSRF 保護からルートを除外

するにはこの問題を解決するには、CSRF トークン検証から特定のルートを除外できます。 Laravel 5.5 以降では、API ルートに web.php の代わりに api.php ファイルを使用できます。CSRF 検証はデフォルトでは有効になっていません。

API ルートに web.php を使用している場合は、 VerifyCsrfToken ミドルウェアの $excel プロパティに URI を追加することで、CSRF トークン検証から除外できます。例:

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

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

class VerifyCsrfToken extends BaseVerifier
{
    protected $except = [
        '/api/*',
    ];
}</code>
ログイン後にコピー

これにより、/api で始まるすべてのルートが CSRF トークン検証から除外されます。

非 API ルートの代替ソリューション

CSRF 保護からルートを除外することが適切でない場合は、ルート グループ内の特定のメソッドに対する CSRF 検証を無効にすることができます。例:

<code class="php">Route::group(['middleware' => 'web'], function () {
    Route::post('/my-route', 'MyController@store')->withoutMiddleware('verify-csrf-token');
});</code>
ログイン後にコピー

これにより、/my-route への POST リクエストの CSRF トークン検証が無効になります。

以上がLaravelのPOSTメソッドとPUTメソッドでステータスコード419が発生する原因は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート