事象
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を記載
];
}