首页后端开发PHPlaravel csrf验证开启报错的问题怎样解决?

laravel csrf验证开启报错的问题怎样解决?

时间2024-03-25 22:06:03发布访客分类PHP浏览1128
导读:这篇文章主要给大家分享laravel csrf验证的使用经验,有一些朋友会遇到csrf验证报错419的问题,但是不知道怎样解决,对此下面就给大家来介绍解决方法,感兴趣的朋友可以了解看看。 问题: laravel 在web路由下无论是表单提交...

这篇文章主要给大家分享laravel csrf验证的使用经验,有一些朋友会遇到csrf验证报错419的问题,但是不知道怎样解决,对此下面就给大家来介绍解决方法,感兴趣的朋友可以了解看看。

问题:
laravel 在web路由下无论是表单提交啊 还是ajax请求啊 只要是请求方式不满足 ['HEAD', 'GET', 'OPTIONS']就会报419错误,原因是其自带开启csrf验证,防止csrf攻击

解决方式:

一.屏蔽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验证开启报错419的解决方法,需要的朋友可以参考,希望对大家解决问题有帮助,想要了解更多可以继续浏览网络其他相关的文章。

文本转载自脚本之家

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: laravel csrf验证开启报错的问题怎样解决?
本文地址: https://pptw.com/jishu/653068.html
JavaScript的两种定时器是什么,如何应用的 基于Java实现图书管理系统的代码和过程是什么

游客 回复需填写必要信息