laravel csrf验证总结
laravel csrf验证总结
前言问题:
laravel 在web路由
下无论是表单提交啊 还是ajax请求啊 只要是请求方式不满足 ['head', 'get', 'options']
就会报419错误,原因是其自带开启csrf验证,防止csrf攻击
感兴趣的可以看看这部分源码:illuminate\foundation\http\middleware\verifycsrftoken
解决方式:
一.屏蔽csrf验证
部分屏蔽
app\http\middleware\verifycsrftoken.php
protected $except = [
//这里添加屏蔽的路由地址
];
全部屏蔽
app\http\kernel.php
注释 \app\http\middleware\verifycsrftoken::class,
二.加入csrf验证参数
form提交
<input type="hidden" name="_token" value="{{csrf_token()}}">
ajax提交
<meta name="_token" content="{{csrf_token()}}"> $.ajax({ url: "xxxx", type: "post", data: data, headers: { 'x-csrf-token': $('meta[name="_token"]').attr('content') }, success: function (data) {} });
注意!!!
因为呢 laravel的token是存储在session里的,所以呢,我遇到了一个大坑,代码传到linux里后 csrf总报错???
最后debug发现 因为提交的token值与session里的不一致
(md 因为 storag2目录么权限 —>storage/framework/sessions 是存储session的目录)
开启777就ok了
最后总结一下排错顺序
1.检查表单有没有 csrf_token
2.linux 下storage有没有读写权限
3.检查session存储位置时候更换过(换过里面还是否有_token)
4.清除浏览器缓存,laravel缓存
最后没招 自己源码debug吧
到此这篇关于laravel csrf验证总结的文章就介绍到这了,更多相关laravel csrf验证内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
上一篇: jQuery源码解读
下一篇: 汕头春游去哪玩 汕头春游的好地方
推荐阅读
-
在Laravel框架里实现发送邮件实例(邮箱验证),laravel发送邮件_PHP教程
-
Laravel下生成验证码的类
-
[麦先生]在Laravel框架里实现邮箱验证---发送邮件,laravel---
-
laravel5.1 - php laravel 如何优雅的写一个登录验证的 中间件鱼路由
-
微信开放平台【第三方平台】java开发总结:验证票据(component_verify_ticket)(-)
-
Laravel框架表单验证详解_php实例
-
[PHP] - Laravel - CSRF token禁用方法
-
Android手机注册登录时获取验证码之后倒计时功能(知识点总结)
-
用Laravel Sms实现laravel短信验证码的发送的实现
-
Laravel中表单size验证数字示例详解