Laravel 如何修复控制台上未找到的CSRF令牌
如何修复laravel 5.4中未找到的CSRF令牌,我尝试在laravel中学习vue js,但我的控制台“CSRF令牌未找到”中有错误,请帮助我如何修复此错误Laravel 如何修复控制台上未找到的CSRF令牌,laravel,Laravel,如何修复laravel 5.4中未找到的CSRF令牌,我尝试在laravel中学习vue js,但我的控制台“CSRF令牌未找到”中有错误,请帮助我如何修复此错误 如果您使用的是Vue,以下是方法: Vue.http.interceptors.push(function (request, next) { request.headers['X-CSRF-TOKEN'] = Laravel.csrfToken; next(); }); 或 window.Laravel= 您可以添加以下元标记
如果您使用的是Vue,以下是方法:
Vue.http.interceptors.push(function (request, next) {
request.headers['X-CSRF-TOKEN'] = Laravel.csrfToken;
next();
});
或
window.Laravel=
您可以添加以下元标记
<meta name="csrf-token" content="{{ csrf_token() }}">
在您的
bootstrap.js
文件中,替换此行document.head.querySelector('meta[name=“csrf token”]”)代码>由$('meta[name=“csrf token”]”)创建。attr('content')代码>
是的
let token = $('meta[name="csrf-token"]').attr('content');
if (token) {
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token;
} else {
console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-
csrf-token');
}
这也解决了vue组件中有表单时的post axios请求
1) 这个错误从何而来
此错误来自resources/js/bootstrap.js
2) 为什么会发生此错误
请参阅下面的代码片段,它试图找出名称csrf令牌的元标记,
如果找到令牌,则将其作为头添加到axios http库。否则显示错误
let token = document.head.querySelector('meta[name="csrf-token"]');
if (token) {
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}
3) 解决办法是什么
VerifyCsrfToken中间件将检查X-CSRF-TOKEN
请求头
您可以将令牌存储在HTML元标记中:
<meta name="csrf-token" content="{{ csrf_token() }}">
对于VueJS 2.0:
Vue.http.headers.common['X-CSRF-TOKEN'] = document.head.querySelector('meta[name="csrf-token"]').content;
阅读有关CSRF令牌的更多信息:如果您正在使用
let-token=document.head.querySelector('meta[name=“csrf-token”]”)代码>
试用
let token=document.querySelector('meta[name=“csrf token”]”)代码>
基本上,您的脚本无法读取带有csrf令牌的元标记,在这种情况下,这应该可以正常工作。如果您在@节的结尾使用了半列,则可能会出现问题。就像我在做什么一样
@endsection代码>
这导致了错误。当我把它改成
@endsection
错误已消失。或者,您只需在$中传递URl,但数组除外,即可将该URl从CSRF验证中排除
文件
像这样
protected $except = [
"readPDF/*",
];
此解决方案仅适用于需要从csrf验证中排除特定URL的情况,因此请谨慎使用。您应该粘贴错误日志或详细说明问题所在。但肯定会发布错误或代码。你发布的错误越多,你得到的反馈就越好。如果你在实际标题之前转储($someVar),也会发生这种情况。这正是我所需要的。谢谢。谢谢你的详细回答,兄弟!有时候,最好解释问题和解决方案,而不是只留下一行代码不解释,即使它解决了问题。我不明白为什么这样可以解决问题,但它确实解决了。谢谢你这也解决了我的问题,为什么?标签位于头部。
Vue.http.headers.common['X-CSRF-TOKEN'] = document.head.querySelector('meta[name="csrf-token"]').content;
app/Http/Middleware/VerifyCsrfToken.php
protected $except = [
"readPDF/*",
];