我无法通过此错误,我尝试在laravel中执行ajax请求,但我无法通过此错误:
{message: "", exception: "Symfony\Component\HttpKernel\Exception\HttpException",…}
这到底是什么意思? CSRF-TOKEN 令牌错误或?
ajax请求:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$("#send").click(function(e){
e.preventDefault();
var id = 5;
$.ajax({
url: '{{url("fly")}}',
type:'POST',
data:{id:id},
success:function(data){
console.log('Yes' + data);
}
});
});
有什么主意吗?
答案 0 :(得分:2)
您的问题是CSRF令牌
您已经在ajax标头中添加了CSRf令牌,但是在meta中尚未指定它。 在布局文件中添加crsf元
<meta name="csrf-token" content="{{ csrf_token() }}">
如果您检查浏览器网络控制台,则如果csrf令牌未正确传递,则会看到419错误
Request URL: http://127.0.0.1:8000/fly
Request Method: POST
Status Code: 419 unknown status
Remote Address: 127.0.0.1:8000
Referrer Policy: no-referrer-when-downgrade
更新了标头,如下所示,因为标头令牌未设置在文档就绪或单击发送中
$("#send").click(function(e){
e.preventDefault();
var id = 5;
$.ajax({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: '{{url("fly")}}',
type:'POST',
data:{id:id},
success:function(data){
console.log('Yes' + data);
}
});
});
答案 1 :(得分:0)
在form标签内添加以下CSRF字段将解决此问题:
{{ csrf_field() }}
答案 2 :(得分:-1)
我昨天已经告诉你这样做:
$("#send").click(function(e){
e.preventDefault();
var id = 5;
$.ajax({
url: '{{url("fly")}}',
type:'POST',
data:{'id':id,'_token': "{{ csrf_token() }}"},
success:function(data){
console.log('Yes' + data);
}
});
});