LaravelでJavaScriptからPostするにはCSRFトークンが必要

LaravelでJavaScriptからポストした際に出たエラーの整理です。

image

スポンサーリンク
スポンサーリンク

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

以下のエラーが出たときは、CSRFトークンが付いていないことが原因です。

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

image

Cross Site Request Forgery protection = クロスサイトリクエストフォージャリ

クロスサイトリクエストフォージェリ(Cross site request forgeries、略記:CSRF、またはXSRF)は、WWW における攻撃手法のひとつである。 具体的な被害としては、掲示板に意図しない書き込みをさせられたり、オンラインショップで買い物をさせられたりするなどが挙げられる。

Laravelのログ、laravel.logには以下のように出力されています。

対策として以下のようにします。

ポイントはこれです。

beforeSend: function (xhr) {
return xhr.setRequestHeader('X-CSRF-TOKEN', "{{csrf_token()}}");
},

Failed to load resource: the server responded with a status of 422 (Unprocessable Entity)

以下のエラーが出たときは、Request validationに引っかかっているようです。

Failed to load resource: the server responded with a status of 422 (Unprocessable Entity)

image

Laravelのホームディレクトリから

app\Http\Requests

にクラスから、rules()を確認します。

エラーが出れば、常にログを確認する。

最後まで読んでいただきありがとうござました。
この記事が気に入っていただけたらシェアしてくれると嬉しいです。