我有一个本机应用程序,可以从远程服务器发布和获取数据。在帖子中,我需要包含csrf令牌以避免令牌不匹配错误。这是后端laravel方法
//Android Login
public function androidLogin(){
return response()->json([
'name' => 'Android Login',
'route' => 'androidLogin'
]);
}
这是反应本机代码(我已经删除了错误捕获代码)。
async handleSubmit(){
var me = this.state.message;
console.log('this connected',me);
let response = await fetch('http://not-brusselus.be/androidLogin', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
'X-CSRF-TOKEN':'csrf_field()'
},
body: JSON.stringify({
session:{
email: 'chesterfield@gmail.com',
password: '123456',
}
})
});
//let res = await response.text();
if (true) {
console.log(response);
} else {
//Handle error
//let error = res;
//throw error;
}
}
回复显示了laravel的令牌不匹配页面。如何成功发送csrf令牌?。
答案 0 :(得分:2)
将CSRF令牌挂在主laravel布局文件中定义的window
之外:
window.Laravel = {
csrfToken: '{{csrf_token()}}'
}
然后在您的javascript请求中使用它:
...window.Laravel.csrfToken
修改强>
对于downvoter:这就是Laravel开箱即用的方式,并建议你也这样做。