TokenMismatchException ajax请求上的RANDOM Laravel
问题描述:
这是如何解释的?TokenMismatchException ajax请求上的RANDOM Laravel
- 干净安装Laravel
- 使用Redis的会话和缓存
- 的问题,如果我在Windows上启动服务器时,只显示在Chrome才会发生。
-
使用了Ajax调用一个简单的js函数:
$.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, data: { _token: $('meta[name="csrf-token"]').attr('content') } }); for(var i = 0; i < 5; i++){ getUsers(); } function getUsers() { $.ajax({ url: '/users', type: 'POST', success: function(data) { console.log(data); } }); }
在元
<meta name="csrf-token" content="{{ csrf_token() }}" />
-
设置CSRF返回了数据的JSON:
公共功能的用户(){
$users = User::all(); return response()->json([ 'users' => $users, ]);
}
在视频的最后,您可以看到RANDOM TokenMismatchException,即使令牌永远不会改变,但有时会发生错误。
https://www.youtube.com/watch?v=QDucHoP647g
我知道这个问题已经从讨论多年,但为什么不存在一个解决方案?
我也发布在laravel github上,但没有解决方案没有解决我的问题。
答
为什么你发送令牌两次?从$.ajaxSetup()
删除该数据部分
为什么使用POST获取用户?改用GET。
这是一个例子。假设我将在该POST /用户上插入一个插入。错误将会发生。从我的测试中我发现TokenMismatchException的问题只有在我点击记住我时才会发生。 (我删除了一个令牌并发送一次)。 –
这实际上不是对作者问题的回答。 – antongorodezkiy