Laravel 5.5,表单中包含有 token 的情况下依然抛出 TokenMismatchException 错误?
交代服务器环境
Centos 7.4 1708 64位
php v7.1.11
session保存在redis中
本地测试windows环境下没问题,线上就一直是这个样子
问题复现在这里
表单提交时报错TokenMismatchException
表单中放置了{{ csrf_field() }}
web页面中也有<input type="hidden" name="_token" value="U30e1OBTyGCQMobl4D0rKrqqIbdc23Im3cs3zRcN">
看下图,post中也有_token数据
所以这个错误产生的原因是什么呢?该怎么解决?
更多文章 欢迎访问一冉再的博客
关于 LearnKu
@overtrue @Summer @Seaony 求助!
@断了再续上 CSRF_TOKEN 生成之后是存储在 Session 里的,确定下你的 Session 是否能正常使用?
如果实在找不到问题出在哪里的话,打开
Illuminate\Foundation\Http\Middleware\VerifyCsrfToken这个Class,handle方法就是验证处理CSRF_TOKEN的,一个一个慢慢调试吧。@Seaony 好的,大概有点方向了。能麻烦您给我大概讲一下csrf的流程吗
这个你直接翻源码看就行了 :sweat_smile:
:neutral_face::neutral_face::neutral_face:@Seaony 先谢过,我先研究了,目前发现redis中并没有存进去_token
@Seaony 现在token前后一致了,但是抛出了错误
尝试了清除浏览器缓存
并尝试了如下操作
均为这个错误
见鬼了,上传到线上正常的,线上测试是这毛病
解决了,本地host映射和线上域名不同,设置了
SESSION_DOMAIN,所以GG。csrf验证问题终于解决,基本别人遇到过的坑全让我踩了一遍。