Awa*_*zer 1 token laravel vue.js
7 项目和VueJs2 这是我的VueJs2代码
mounted: function() {
if(this.edit != null)
{
var token = document.head.querySelector('meta[name="csrf-token"]');
console.log(token);
$.ajax({
type:'POST',
url: path+'get_voucher_data',
data: [{'_token':token}],
success:(data) => {
console.log(data);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
POST http://localhost/test/public/get_voucher_data 419 (unknown status)
Run Code Online (Sandbox Code Playgroud)
另外,这是我的刀片代码:
<meta name="csrf-token" content="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么会发生这种情况,我该如何解决?
Laravel 有一个名为的中间件VerifyCsrfToken,默认启用。它确保所有 POST 请求都有一个 csrf 令牌。此令牌确认请求从我们的应用程序,而不是发送来自任何第三方刮刀或形式submiting工具。
当控制器没有在请求中获得 _token 时,它会抛出错误。
看起来您正在尝试发送但不正确。更新到这个:
var token = $('meta[name="csrf-token"]').attr('content');
data: {
_token : token
},
Run Code Online (Sandbox Code Playgroud)
目前您关注的是未正确发送令牌的内容:
data: [{'_token':token}]
Run Code Online (Sandbox Code Playgroud)
更简单的配置:
您可以设置 jquery ajax ,而不是在每个 ajax 请求中发送 _token :
$.ajaxSetup({
data: {
_token: $('meta[name="csrf-token"]').attr('content')
}
});
Run Code Online (Sandbox Code Playgroud)
那么每一次ajax请求都会自动有这个,不需要在每一次ajax请求数据中再次指定。