我有一个问题,我不知道为什么会显示此错误。我有一个通过ajax发布的表单。我在视图的头部添加了隐藏字段meta标记。执行时我的ajax呼叫我正在使用Ajaxsetup引入令牌。
这是我视图顶部的html meta标签。
<meta name="csrf-token" content="{{ csrf_token() }}">
我的ajax电话是
$('#login_model_submit').on('click', function () {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
let url = window.location.origin + '/login';
let data = {
'email': $('#login_email').val(),
'password': $('#login_password').val(),
'_token': $('meta[name="csrf-token"]').attr('content')
};
$.ajax({
url: url,
type: 'POST',
data: data,
success: function () {
alert('Success')
},
error: function (e) {
alert(e.responseText)
}
});
});
不知道为什么我会遇到csrf令牌不匹配的情况。我已经完成了我在此处的许多问题/答案中所看到的内容,很简单,它不起作用。任何帮助都非常感谢。
这是我的请求标头
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Content-Length: 49
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Host: vb.local
Origin: http://vb.local
Referer: http://vb.local/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
X-CSRF-TOKEN: YpP9izd705ztdtyqyFTBByLqcNmzoUIyb3i07HlA
X-Requested-With: XMLHttpRequest
答案 0 :(得分:-1)
此问题来自CSRF令牌验证失败。因此,要么您不发布一个,要么发布不正确的一个。
在表单中使用{{ csrf_field() }}
OR
将您的路线URL添加到Http/Middleware/VerifyCsrfToken.php
文件中。
示例像这样。如果您的ajax路由Route::post('searchsubmit','User\UserController@ViewSearchList')->name('searchsubmit');
Http / Middleware / VerifyCsrfToken.php
protected $except = [
'searchsubmit',
];
根据您的情况,您需要添加login
,
protected $except = [
'login',
];
然后通过以下方式清除缓存
php artisan config:clear
php artisan cache:clear
php artisan config:cache