首页 > 技术分享 > Laravel
收藏

使用Laravel提交POST请求,出现419 Page Expired错误

12/01 14:04
大潇博客 原创文章,转载请标明出处

使用laravel提交POST请求时,出现“419 Page Expired”错误,如下图

image.png


laravel规定,任何指向 web 中 POST, PUT 或 DELETE 路由的 HTML 表单请求都应该包含一个 CSRF 令牌(CSRF token),否则,这个请求将会被拒绝


也就是说,提交POST、PUT等时,需要一个合法字符串做安全验证


解决办法: 

1、加上 CSRF token

<'form method="POST" action="profile">

{{ csrf_field() }}

    ...

<' /form>


2、也可以最新写法

<'form method="POST" action="profile">

    @csrf

    ...

<' form>


如果是AJAX提交,在页面头部加上csrf-token:

提交headers中增加 X-CSRF-TOKEN:

$.ajaxSetup({

    headers: {

        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')

    }

});


也可以在指定页面移除CSRF保护(相对不安全):

/app/Http/Middleware/VerifyCsrfToken.php

namespace App\Http\Middleware;

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

class VerifyCsrfToken extends Middleware{

/**

  * 从 CSRF 验证中排除的 URL

  *

  * @var array

  */

protected $except = [

     'alipay/*',

     'http://example.com/foo/bar',

     'http://example.com/foo/*',

];

}


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311