多个异步ajax请求的laravel 5中的CSRF令牌不匹配错误?

时间:2016-04-06 09:19:29

标签: ajax laravel asynchronous token

我正在使用Laravel 5.2作为我的Web应用程序,并且我有一个页面包含同一事件的多个ajax请求。在$ .ajax中,我设置async:true,有时它显示CSRF令牌不匹配错误并重定向到登录页面。但是当我在ajax中设置Async:false时,它工作正常,但需要很多时间。

请帮助我,以免它显示令牌不匹配错误。

3 个答案:

答案 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() }}',