这篇文章主要介绍了laravel csrf验证总结,csrf是laravel表单提交和ajax请求为了安全设置的机制,有感兴趣的同学可以深入学习下
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验证内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
本文标题为:laravel csrf验证总结


基础教程推荐
- Laravel 解决composer相关操作提示php相关异常的问题 2023-03-08
- PHP采用get获取url汉字出现乱码的解决方法 2024-03-28
- php去除deprecated的实例方法 2022-09-02
- PHP基于反射机制实现自动依赖注入的方法详解 2022-10-02
- php如何获取当前日期和星期 2024-12-06
- php生成短网址/短链接原理和用法实例分析 2023-04-20
- Laravel修改验证提示信息为中文的示例 2023-03-08
- PHP laravel使用自定义邮件类实现发送邮件 2023-07-03
- php+mysql开发的最简单在线题库(在线做题系统)完整案例 2023-01-04
- PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br 2024-03-28