ラボ > Laravel、Lumen:セキュリティ絡み、ajax、api絡み、エラー関連
Laravelでajax(API):419エラー
API実行時に「The requested URL returned error: 419 unknown status」というエラー
作成日:2019-06-09, 更新日:2022-12-30
経緯
▼条件
・URLを「api/〇〇〇」とするのはNG
→「routes\api.php」じゃなくて「routes\web.php」にルーティングの設定を行う
▼Laravelで簡単なAPIを作って、cURLから叩いてみたら419エラーが返ってきた
The requested URL returned error: 419 unknown status
CSRF対策が原因なのでCSRFのトークンをセットしてやればいいんだろうけど・・・コレって外から叩かせたいAPIとしては致命的じゃないかな?
対策
いくつか方法がある。
・CSRF自体を無効にする
・特定のコントローラーのみCSRFを無効にする
CSRF自体を無効にする
▼「app\Http\Kernel.php」を修正
// ▼コイツを探してコメントしておく \App\Http\Middleware\VerifyCsrfToken::class
一番、手っ取り早いけど・・・セキュリティ的にどうかと思う。
「$middlewareGroups」の「api」に「\App\Http\Middleware\VerifyCsrfToken::class」を追加すればCSRFを有効にすることが出来ると思ったら「500エラー」になってしまった。
詳細不明だし、調査する気も無し。
特定のコントローラーのみCSRFを無効にする
▼「app\Http\Middleware\VerifyCsrfToken.php」に対象外を記述
略 protected $except = [ '〇〇〇', '〇〇〇', ]; 略
「hoge/abc」と「hoge/zyx」のCSRFを無効にする場合
略 protected $except = [ 'hoge/abc', 'hoge/zyx', ]; 略
「hoge/*」(「hoge/」以下)のCSRFを無効にする場合
略 protected $except = [ 'hoge/*', ]; 略