在 Laravel5 框架开发页面过程中,使用Ajax Post方式提交一个表单时,返回419 unknown status状态,并且没有错误日志记录,后来在控制台取出完整输出,逐行排查才发现是CSRF的验证拦截。

普通的表单post提交,很容易在调试模式下发现这个问题,但是使用Ajax提交时,错误不是很直观。

找到问题后,就很好解决了,下面提供几种方案:

方案一:在ajax的提交数据中加上 _token:"{{csrf_token()}}",提交数据中带上csrf_token参数。

方案二:如果Ajax提交的是整个表单的内容,可以直接加上 {{csrf_field()}}

方案三:mate区域加上全局的csrf_token参数:

<meta name="csrf-token" content="{{ csrf_token() }}">

方案四:在Laravel5框架中,关掉csrf验证。

以上几种方案中,方案一和方案二可以视具体场景合理选择,方案三和方案四不是很推荐。

本文为 陈华 原创,欢迎转载,但请注明出处:http://www.ichenhua.cn/blog/post/22