2016-03-09 119 views
0

在我的Laravel应用程序中,我有一个通知系统。TokenMismatchException在Laravel的AJAX轮询期间

$.ajaxSetup({ 
    headers: { 
     'X-CSRF-Token': CSRF_TOKEN 
    } 
}); 

(function pollForNewNotifications() { 
    setTimeout(function() { 
     $.ajax({ 
       type: 'POST', 
       url: 'http://example.com/get-notifications', 
       dataType: 'json', 
       data: { 
        // data that is sent 
       }, 
       success: function (data) { 
        // add new notifications if data is not empty logic 
        pollForNewNotifications(); 
       } 
      }) 
      .fail(function (xhr, status, err) { 
       console.error(xhr.responseText) 
      }); 
    }, 5000); 
})(); 

现在这个工程的大部分时间:这是使用AJAX轮询技术(即一个AJAX功能后运行每5秒左右)类似的运行。

但是,问题是,我有时会发现,长时间处于非活动状态时,我得到一个TokenMismatchException in VerifyCsrfToken.php错误并自动注销。

我认为这是因为CSRF令牌更改或更长时间是有效的(我可能是错的)。

我该如何解决这个问题?

回答

1

您可以删除标记检查,以这种特殊的URL,这样它可以使请求,而不检查CSRF令牌。转到app/Http/Middleware/VerifyCsrfToken.php

地方本

protected $except = [ 
    'get-notifications', 
]; 
相关问题