前言
本文主要给大家介绍了关于Laravel框架中VerifyCsrfToken报错问题的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
报错情况
form 表单进行 post 方式提交数据时,遇到如下的报错情况.
1
2
3
|
TokenMismatchException in VerifyCsrfToken.php line 67:
in VerifyCsrfToken.php line 67
at VerifyCsrfToken->handle(object(Request), object(Closure))
|
post 数据提交报错
原因
Laravel 推荐在全局注册 VerifyCsrfToken 的 Middleware ,对所有 Post,Put,Delete 请求自动校验是否带合法的 _csrf token。
解决方法
方法 1.在form表单中添加如下的隐藏域代码
1
|
< input type = "hidden" name = "_token" value = "{{ csrf_token() }}" />
|
方法 2.在form表单中添加 csrf_field
(与上述解决方法功能一致)
1
|
{!! csrf_field() !!}
|
方法 3.注释 Kernel.php 代码
打开 app\Http\Kernel.php,在文件中注释掉下面的代码
1
|
\App\Http\Middleware\VerifyCsrfToken:: class
|
方法 4. 修改handle()方法
打开 \app\Http\Middleware\VerifyCsrfToken.php,添加或修改 handle()方法如下:
1
2
3
4
5
6
7
|
public function handle( $request , \Closure $next )
{
// 使用CSRF
//return parent::handle($request, $next);
// 禁用CSRF
return $next ( $request );
}
|
补充 csrf 介绍
csrf 图解释义
参考文章
1. Laravel 5.3 文档 - CSRF攻击原理及其防护
2. Laravel 5.3 文档 - HTTP层 CSRF保护
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。
原文链接:http://www.jianshu.com/p/a55403223660