原因:
aravel 通过自带的 CSRF 保护中间件让避免应用遭到跨站请求伪造攻击变得简单:Laravel 会自动为每一个被应用管理的有效用户会话生成一个 CSRF “令牌”,然后将该令牌存放在 Session 中,该令牌用于验证授权用户和发起请求者是否是同一个人。
中间件组 web
中的中间件 VerifyCsrfToken
会自动为我们验证请求输入的 token 值和 Session 中存储的 token 是否一致,如果没有传递该字段或者传递过来的字段值和 Session 中存储的数值不一致,则会抛出异常。
解决办法:
排除指定 URL 不做 CSRF 安全校验
如果你想要让特定的 Cookie 子集在生成时取消加密,可以通过 app/Http/Middleware
目录下的中间件 App\Http\Middleware\EncryptCookies
提供的 $except
属性来排除这些 Cookie:
/**
* 不需要被加密的cookies名称
*
* @var array
*/
protected $except = [
'cookie_name',
];