laravel csrf验证总结

2022-04-15 0 978

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验证内容请搜索NICE源码以前的文章或继续浏览下面的相关文章希望大家以后多多支持NICE源码!

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 PHP编程 laravel csrf验证总结 https://www.niceym.com/17542.html