一个网页里发起多个 Ajax 请求后,出现 419 token 验证失败的问题

第一次ajax请求的路由存在于api.php内,所以是不需要csrf token验证的,但是在通用的ajax方法中设置了csrf token的header头
一个网页里发起多个ajax请求后,出现419 token验证失败的问题
这次请求肯定是成功的,
但是当我第二次(通过用ajax表单提交内容的时候,这个接口写在了web.php的路由里,就需要csrf token的验证了) ,
这时候抛出
一个网页里发起多个ajax请求后,出现419 token验证失败的问题
一个网页里发起多个ajax请求后,出现419 token验证失败的问题
当去查找csrf中间件,排插问题的时候:

一个网页里发起多个ajax请求后,出现419 token验证失败的问题

一个网页里发起多个ajax请求后,出现419 token验证失败的问题

一个网页里发起多个ajax请求后,出现419 token验证失败的问题
header里的token和session里的token已经不一致了,这种情况是怎么回事?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 10

这里还有一个小问题:
当我刷新页面后,直接提交表单 (路由在web.php内) ,这时候csrf token的没问题的

file

4年前 评论

其实按照正常的逻辑,路由应该统一存放在web.php里应该更好吧

4年前 评论

你关闭这个路由的csrf验证不就行了

4年前 评论

@pigzzz 恩,我目前就是关闭掉了这个验证,就是挺奇怪的,只要请求完api.php的路由,去请求web.php的路由就不管用了。。。

4年前 评论

@ericdemon 那就不知道原因了

4年前 评论

api.php 和 web.php 里的 session 是隔离的,应该是使用的中间件不同,同时访问这两个,session 就被另一个覆盖了。
你这种情况,可以把 api.php 里的路由写在 web.php 里

Route::post('api/xxxxx','xxx');
4年前 评论

@pigzzz 楼下的解决方案挺好的,可以学习一下

4年前 评论

@Kiddyu 恩,想到比较好的解决方法就是这种,自己做一个api的路由group放在web.php里,这样就可以解决csrf token的问题了,谢谢

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!