質問:
Laravel 5.5 での AJAX 呼び出しですが、「419」が発生します(不明な状態)」というエラーが発生しました。私のページにはフォームがありませんが、問題は CSRF トークンにあると思われます。これを解決するにはどうすればよいですか?
回答:
クライアント側:
HTML ヘッド セクションに、以下:
<meta name="csrf-token" content="{{ csrf_token() }}">
これにより、一意の CSRF トークンが生成されます。サーバーは受信リクエストを検証するために使用します。
AJAX リクエスト:
AJAX リクエストを変更してヘッダーに CSRF トークンを含めます:
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } });
これにより、サーバーはリクエストの発信元を検証し、CSRF を防ぐことができます。
Laravel ミドルウェア (オプション):
Laravel は、POST リクエストを保護するために CSRF ミドルウェアを自動的に適用します。特定のルート (AJAX 呼び出しを処理するルートなど) に対してこのミドルウェアを無効にするには、AppHttpMiddlewareVerifyCsrfToken ミドルウェアに次の行を追加します:
/** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ '/fetch-company/*', ];
References:
以上がLaravel 5.5 AJAX 419 エラー: CSRF トークンの問題を修正するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。