CSRF 代币不匹配。", exception: " Symfony\Component\HttpKernel\Exception\HttpException


function edit_expense(val){
var id = val;
var amount = $('#expense_amount_'+id).val();
var image = $('#img_file_'+id)[0].files[0];

$.ajax
({
type:'post',
url:'{{route('edit_expense')}}',

headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
processData: false,
contentType: false, 
data: { "_token": "{{ csrf_token() }}",'id':id, 'amount': amount,'image': image },        
success:function(data)          
{          
$('.revnue_updated').removeClass('d-none');
$(".revnue_updated").fadeOut(3000);
}
});
};

这是我的代码,我在添加标头后也得到了csrf令牌不匹配。我想在数据中发送图像值,但显示csrf不匹配

这个问题有多种解决方案。

  1. 您可以将您的路由添加到VerifyCsrfToken中间件(打开app/middleware/VerifyCsrfToken.php,并将路由url附加到$except数组
  2. 你可以添加元标签到你的布局刀片元名称是";csrf令牌";内容为{{csrf_token((}}并将此代码添加到ajax请求中headers:{'X-CSRF-Token':$('meta[名称="CSRF令牌";]'(.attr('content'(}

另一方面,您可以将_token密钥添加到ajax数据中,并使用{{csrf_token((}}

使用"Formdata((";,下面是工作代码。我希望它能有所帮助。

function edit_expense(val){

var form_data = new FormData();
var id = val;

var amount = $('#expense_amount_'+id).val();
form_data.append('id', id);
form_data.append('amount',amount);
form_data.append('_token', '{{csrf_token()}}');
form_data.append('image',$('#img_file_'+id)[0].files);
$.ajax
({
type:'post',
url:'{{route('edit_expense')}}',
mimeType: "multipart/form-data",
async:true,
dataType: 'json',
cache: false,
processData: false,
contentType: false, 
data: form_data,        
success:function(data)          
{          
$('.revnue_updated').removeClass('d-none');
$(".revnue_updated").fadeOut(3000);
}
});
};

相关内容

最新更新