ホームページ >バックエンド開発 >PHPチュートリアル >Laravel 5.5 AJAX 呼び出しで「419 (不明なステータス)」エラーが返されるのはなぜですか?

Laravel 5.5 AJAX 呼び出しで「419 (不明なステータス)」エラーが返されるのはなぜですか?

DDD
DDDオリジナル
2024-12-01 19:08:14320ブラウズ

Why Does My Laravel 5.5 AJAX Call Return a

Laravel 5.5 AJAX 呼び出しが「419 (不明なステータス) を返す」

はじめに

Laravel 5.5 で AJAX 呼び出しを実行すると、 「419 (不明なステータス)」エラーが発生するとイライラすることがあります。このエラーは、多くの場合、クロスサイト リクエスト フォージェリ (CSRF) 保護の問題を示しています。この記事では、このエラーの原因を調査し、それを解決するための包括的な解決策を提供します。

CSRF 保護について

Laravel は CSRF を採用しています。外部リクエストを通じて開始される不正なアクションを保護するための保護には、リクエストが正当なソースからのものであることを検証し、悪意のある行為者がユーザーに対して悪意のあるアクションを実行することを防ぎます。代理。

「419」エラーの解決

コード内にフォームがない場合、AJAX リクエストで提供されたトークンがセッションに保存されているトークンと一致しないため、エラーが発生します。これを修正するには、アプリケーションが CSRF トークンを生成し、それを AJAX リクエストに含めていることを確認する必要があります。

解決策

1. CSRF メタ タグの追加

HTML のヘッド セクションに次のメタ タグを含めます:

<meta name="csrf-token" content="{{ csrf_token() }}">

このメタ タグは、一意の CSRF トークンを生成し、ブラウザのセッションに保存します。

2. AJAX リクエストの構成

メタ タグから CSRF トークンを取得するように AJAX リクエストを更新します:

$.ajax({
  url: '/fetch-company/' + companyId,
  method: 'POST',
  headers: {
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
  },
  ...
});

3. CSRF 保護を有効にする

app/Http/Middleware/VerifyCsrfToken.php ミドルウェアをチェックして、Laravel アプリケーションで CSRF 保護が有効になっていることを確認します。これは、kernel.php ファイルの $middlewareGroups['web'] 配列に追加する必要があります。

結論

これらの手順を実装することで、「419 (不明なステータス)」を効果的に解決できます。 Laravel 5.5 で AJAX 呼び出しを行うときに " エラーが発生します。 CSRF 保護は Web アプリケーションのセキュリティを維持するために非常に重要であるため、これらのガイドラインに注意深く従うことが重要であることに注意してください。 CSRF 保護の詳細については、Laravel の公式ドキュメントを参照してください。

以上がLaravel 5.5 AJAX 呼び出しで「419 (不明なステータス)」エラーが返されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。