Laravel 如何修复控制台上未找到的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= 您可以添加以下元标记

如何修复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=

您可以添加以下元标记

<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/*",
    ];