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" value="{{csrf_token()}}">
ajax提交
<meta 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验证内容请搜索剧本之家以前的文章或继承欣赏下面的相关文章但愿各人今后多多支持剧本之家!
您大概感乐趣的文章: