Laravelでsanctumを使っていて、419エラーが発生することがあります。 遭遇したエラーとその解決方法を紹介します。
エラーメッセージが 「CSRF token mismatch.」
headerに「X-XSRF-TOKEN」が付与されていない
/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php
ファイルのtokensMatch
メソッドで headerに「X-XSRF-TOKEN」が存在しないことでエラーが発生していました。
フロントのaxiosでリクエストを送信する際に、headerに「X-XSRF-TOKEN」が付与されていないことが原因でした。
設定を確認し、withXSRFToken
をtrueにすることで解消しました。
これまではwithCredentials
をtrueにするだけで問題なかったのですが、最近のバージョン(1.6.2以上)ではwithXSRFToken
が必要になっていました。
import Axios from 'axios'
const axios = Axios.create({
baseURL: ・・・,
headers: ・・・,
withCredentials: true,
withXSRFToken: true, // <-- 追加
})
export default axios
https://github.com/advisories/GHSA-wf5p-g6vw-rhxx https://github.com/axios/axios/releases/tag/v1.6.2
--
以上です。 随時追記していきます。