Laravelで見たこともないエラーが出ました。
HTTPステータスコードは「419」です。
ということで今回は、419のHTTPエラーが出た場合の対処法を解説します。
目次
HTTPステータスコード「419」とは
HTTPステータスコードのWikipediaには載っていません。
ので、分かりません。
419は「unknown status」なので定義されていないステータスコードになります。
419が出る原因は?
Laravelでは「クロスサイトリクエストフォージェリ」対策として、CSRFトークンを使用することができるのですが、これを正しく使用していない場合に出るエラーです。
要は、「CSRF対策の仕組みがあるんだから、ちゃんと使えよ」っていう意味です。
419の対策方法
1.CSRFトークンを使用する
1 2 3 4 5 6 7 8 |
<form action="/auth/login" method="post"> <!-- CSRF保護 --> @csrf <div class="form-group"> <input type="text" name="username" value="{{ old('username') }}"> </div> </form> |
画面内に「@csrf」を追加するだけです。
※Laravelが5.5以前は「{{ csrf_field() }}」を使用します。
2.CSRFの仕組みを無効化する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { /** * The application's global HTTP middleware stack. * * These middleware are run during every request to your application. * * @var array */ protected $middleware = [ \App\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \App\Http\Middleware\TrustProxies::class, ]; /** * The application's route middleware groups. * * @var array */ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, // \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ], 'api' => [ 'throttle:60,1', 'bindings', ], ]; /** * The application's route middleware. * * These middleware may be assigned to groups or used individually. * * @var array */ protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, ]; /** * The priority-sorted list of middleware. * * This forces non-global middleware to always be in the given order. * * @var array */ protected $middlewarePriority = [ \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\Authenticate::class, \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, \Illuminate\Auth\Middleware\Authorize::class, ]; } |
「VerifyCsrfToken」ミドルウェアをコメントアウトし、CSRFの仕組みを無効化します。
おすすめ書籍
僕はLaravelの勉強をするのに以下の書籍を購入しました。おすすめですよ!
まとめ
419のエラーって何ぞって思ってしまいましたが、調べてみると意外と情報が出てきますね。
ただマニアックな情報だったので今回は記事にしてみました。
ではまた!