本文へ移動
Webstudio YAS
  • About
  • Price
  • Work
  • Blog
  • Contact
  • About
  • Price
  • Work
  • Blog
  • Contact
  1. ホーム
  2. Blog
  3. 【Laravel】CSRFトークンを付けているのに、status419エラー

公開日: 2020.01.20

【Laravel】CSRFトークンを付けているのに、status419エラー

【Laravel】CSRFトークンを付けているのに、status419エラー

目次

  • 現象
  • 原因
  • 対策

Laravelでajax通信をする時、セキュリティの観点からCSRFトークンを付けていないとエラーになります。しかし、CSRFトークンを設定しているのに、status419エラーが出た時の話。

現象

通常時は正常に稼働しているんですが、以下のような場合に、status419エラーが出た。

・定期的にAjax通信をするページで、そのページを開きっぱなしにしていた時。
・ページを開いた時に、前回のajax通信が残っている時。
(ブラウザの設定で、立ち上げ時に前回開いていたページを開く設定にしている場合など)

いずれも、以下のようなエラーが出て通信が正常に行われなかった。

Failed to load resource: the server responded with a status of 419 (unknown status)

原因

当然といえば当然ですが、トークンの有効期限が過ぎたのが原因だと思われる。

Laravelのトークンのデフォルトの有効期限は120分。

対策

対策というほどの事ではないですが、419エラーを受け取ったらページをリロードするようにしました。

$.ajax({
    type: "GET",
    url: "request.php",
    data: { 'データ': data },
    dataType: "json",
    scriptCharset: 'utf-8',
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
})
    .then(
        function (param) {
            // 通信後の処理
        },
        function (XMLHttpRequest, textStatus, errorThrown) {
            // トークンエラー処理
            if (XMLHttpRequest.status == '419') {
                // リロード
                location.reload();
            }
        });

あと、メタタグを忘れずに。

<meta name="csrf-token" content="{{ csrf_token() }}">

タグ

  • Ajax
  • CSRFトークン
  • Laravel
  • status419

関連記事

2019.11.08

Laravel 標準のログアウト先を変更する方法

Laravel 標準のログアウト先を変更する方法

2020.09.08

【Laravel】ルーティングに問題ないのにNot Found(404)

【Laravel】ルーティングに問題ないのにNot Found(404)

2021.09.27

【Laravel】キャッシュ関連をクリアしてもクラスファイルの変更が反映されない時

【Laravel】キャッシュ関連をクリアしてもクラスファイルの変更が反映されない時
Webstudio YAS
  • About
  • Price
  • Work
  • Blog
  • Contact
YAS プロフィール画像

長野県長野市在住
WEBエンジニア YAS

LINKS

  • X
  • Instagram
  • GitHub
Design
  • スタンダード
  • 和モダン
  • エンジニア
  • 信州ナチュラル
プライバシーポリシー

@ Webstudio YAS