我知道我是StackOverflow的初学者,但我遇到了一个难题
好吧,开始做生意我在laravel中遇到令牌麻烦。有时一切顺利,但我有错误:
jquery-2.2.4.min.js:4 POST http://localhost:8000/checkabsence/delete 500(内部服务器错误)
我的js:
$.ajax({
method:"post",
url:postDeleteAbsence,
data:{
_token:token,
absenceid: absenceid
}
}).done(function(msg) {
alert('deleted');
});
我100%确定我正在传递令牌和遗嘱。我的令牌在我的视图中设置:var token = '{{ Session::token() }}';
我的路线:
Route::post('/checkabsence/delete', [
'uses' => 'AbsenceController@postDeleteAbsence',
'as' => 'postDeleteAbsence',
'middleware' => 'auth'
]);
我的控制器:
public function postDeleteAbsence(Request $request) {
//code
}
我的laravel版本: 5.2.41
在我的上一个项目中,我创建了多个Ajax请求,一切运行良好,现在我收到了这个错误...... 请注意,有时我在非ajax post请求上也会出现令牌不匹配(例如,在第五次请求时它会引发令牌不匹配错误)
我希望你能帮助我,因为我真的不知道该做什么或我做错了什么......
//新闻
我注意到我的数据库中的令牌与我在ajax请求和其他地方使用的令牌不同。
路线: routes
答案 0 :(得分:0)
使用AJAX时,您必须将标记设置为标题。
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': {{ csrf_token() }}
}
});
修改强>
尝试以这种方式添加令牌:
$.ajax({
method: 'post',
url: postDeleteAbsence,
data: {
absenceid: absenceid
},
headers: {
'X-CSRF-TOKEN': '<?php echo csrf_token(); ?>'
}
}).done(function(msg) {
alert('deleted');
});
答案 1 :(得分:0)
我遇到了和你一样的问题。在我的情况下,原因是用户登录时的身份验证。我使用Auth::login($user, true);
而不是Auth::login($user);