9
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

laravelでPOSTのajax通信が上手くいかない

Posted at

事象

POSTでajax通信しようとしたところ「419 (unknown status)」が発生した。

原因

laravelでPOST通信する際はパラメータにCSRFトークンを設定する必要がある。
https://readouble.com/laravel/5.5/ja/csrf.html

修正方法

POSTパラメータにCSRFトークンを追加するかCSRF保護から使用するURIを除外する。

▼POSTパラメータにCSRFトークンを追加する

  • headタグ内に下記metaタグを追加
bladeファイル
<meta name="csrf-token" content="{{ csrf_token() }}">
  • ajaxのheadersにCSRFトークンを追加
jsファイル
$.ajax({
    url: '{URL}',
    type:'POST',
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    
})

▼CSRF保護から使用するURIを除外する

  • CSRF保護の除外リストに対象のURIを追加する。
app/Http/Middleware/VerifyCsrfToken.php
<?php

namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;

class VerifyCsrfToken extends Middleware
{
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        // CSRF保護から除外するURIを記載
    ];
}
9
18
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?