我正在使用 Laravel 进行项目,我需要 CSRF令牌进行API调用。 我的CSRF元标记有时包含已过期的标记。通过刷新它可以像10个新电话一样。所以在完成10次刷新后,我从AJAX调用中获得 TokenMismatchException 。将此API调用设为CSRF异常不是一种选择,因为API调用负载很重并且包含有价值的信息。
我没有自定义任何middelware类。
我在javascript中的AJAX调用如下所示:
$.ajax({
url: '/getAllProducts',
type: 'POST',
data: {
type: "gpu",
hash: md5hash,
_token: $('meta[name="csrf-token"]').attr('content')
},
dataType: 'json',
success: function (response) {
md5hash = '';
products = response;
$('.more-information').fadeIn();
$.getScript("/js/filter-products.js", function(){
filterProducts();
});
$.getScript("/js/createPopup.js", function(){
$('.more-information').on('click', createPopup);
$('.open-details').on('click', createPopup);
});
}
});
我的路线看起来像这样
route::post('/getAllProducts', 'PartsController@getAllProducts');
生成元csrf令牌,就像标准的Laravel app.blade.php
一样<meta name="csrf-token" content="{{ csrf_token() }}">
我知道关于这个问题还有其他问题,但我找不到解决方案。我尝了几个。
以下是我尝试的解决方案列表:
真的希望有人可以帮助我
答案 0 :(得分:0)
在ajax设置中设置令牌。
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});