[Laravel]sanctumの419エラーの原因と対応方法

広告Laravel
2024年4月15日

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

--

以上です。 随時追記していきます。