我正在使用Laravel 5.2作为我的Web应用程序,并且我有一个页面包含同一事件的多个ajax请求。在$ .ajax中,我设置async:true,有时它显示CSRF令牌不匹配错误并重定向到登录页面。但是当我在ajax中设置Async:false时,它工作正常,但需要很多时间。
请帮助我,以免它显示令牌不匹配错误。
答案 0 :(得分:0)
在您的表单中创建一个隐藏的字段名称_token,您可以使用此帮助方法生成字段
Imports System.IO
在javascript中你必须获取此字段值
{!! csrf_field() !!}
另一种方法是创建隐藏的span或div add data属性
var token = $( "input[name='_token']" ).val();
$.ajax({
method: "POST",
url: "some.php",
data: { name: "John", location: "Boston",_token:token }
});
获取javascript数据值
<div id="token" data-token="{{ csrf_token() }}"></div>
答案 1 :(得分:0)
你说你用
$ .ajaxSetup({headers:{'X-CSRF-Token':$('meta [name = _token]')。attr('content')}});
也许在请求覆盖的某处标题,尝试在
上更改它$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRF-Token', $('meta[name=_token]').attr('content') );
}
});
答案 2 :(得分:0)
请修改您的网址变量,如下所示:
url: '/my-route'+'?_token=' + '{{ csrf_token() }}',