【Laravel】419エラーが出たときの対策
Laravelの勉強をしている中で、POST通信をするときに「419エラー」が出ました。
原因と対策をメモ代わりにポストしておきます。
LaravelのPOST通信で419エラー
↑ こんなのが出ました。
419エラーとは
そもそも「419エラーって何なんだ?」ということで「HTTPステータス」を確認。
HTTPステータスコード - Wikipedia
https://ja.wikipedia.org/wiki/HTTP%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89
https://ja.wikipedia.org/wiki/HTTP%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89
あれ? 419が無いぞ。
Wikipediaにも載っていないということで、Laravelの独自エラーコードなんだろう、ということにしておきました(笑)
419エラーの原因
POST通信の際のCSRF(クロスサイトリクエストフォージェリ)対策に失敗しているので出ているエラーで、恐らくほとんどの場合は「CSRFトークン」の記述もれが原因だと思われます。
実際に私が419エラーを出した際もCSRFトークンの書き忘れでした。
対策
対策という大げさなことでもなく、「CSRFトークン」をフォーム内部へ書き込むだけです。
1 2 3 4 |
<form method="POST" action="/profile"> @csrf // ←★これ ... </form> |
↑ @csrf と書くだけ。
※ Laravelのバージョンがが5.5以下の場合は {{ csrf_field() }} と記述します。
以上です。