このエラーの背景
ユーザーの編集機能を作っていたときに419のエラーが発生しました。
最初はエラーが謎すぎて詰まってしまいましたが、記事を見つけて解決できました。
エラー画面
エラー原因
調べてみたらLaravelが持つtokenの値とPOSTする_tokenパラメータが一致しないことが原因みたいです。
解決策
@csrfがbladeに無いかformの外側になっていた
ことが原因でした。
これが圧倒的に多いみたいです。自分の場合です。
edit.blade.php
@extends('layouts.app')
@section('content')
<h2 class="mt-5 mb-3">ユーザ情報を編集する</h2>
@csrf
<form method="POST" action="{{ route('users.update', $user->id) }}">
@method('PUT')
@include('commons.error_messages')
//省略
こんな感じでした。以下に修正しました。
edit.blade.php
@extends('layouts.app')
@section('content')
<h2 class="mt-5 mb-3">ユーザ情報を編集する</h2>
<form method="POST" action="{{ route('users.update', $user->id) }}">
@csrf
@method('PUT')
@include('commons.error_messages')
//省略
これで解決しました。1番多い原因みたいです。
他の原因と解決法
1.単純なセッションの期限切れ
ブラウザを更新すると解決できるみたいです。
2.ブラウザの再起動
文字通りブラウザの再起動です。
3.configのキャッシュが残っている
キャッシュクリアをする必要があります。
php artisan cache:clear
php artisan config:clear
詳しくは参考資料を読んでください。
資料