答案 0 :(得分:76)
您可以添加以下元标记
<meta name="csrf-token" content="{{ csrf_token() }}">
答案 1 :(得分:7)
如果您正在使用Vue,请按以下步骤进行操作:
Vue.http.interceptors.push(function (request, next) {
request.headers['X-CSRF-TOKEN'] = Laravel.csrfToken;
next();
});
或
<script>
window.Laravel = <?php echo json_encode([
'csrfToken' => csrf_token(),
]); ?>
</script>
答案 2 :(得分:2)
1)此错误来自何处?
此错误来自 resources / js / bootstrap.js
2)为什么会发生此错误?
请参见以下代码段,尝试找出名称为csrf-token的元标记, 如果找到令牌,则将其添加为头文件到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() }}">
它将生成令牌,如图像所示:
对于Ajax请求:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
对于VueJS 2.0:
Vue.http.headers.common['X-CSRF-TOKEN'] = document.head.querySelector('meta[name="csrf-token"]').content;
详细了解CSRF令牌:https://laravel.com/docs/5.8/csrf
答案 3 :(得分:2)
如果您正在使用
let token = document.head.querySelector('meta[name="csrf-token"]');
尝试使用
let token = document.querySelector('meta[name="csrf-token"]');
基本上,您的脚本无法读取带有csrf令牌的元标记,在这种情况下,该脚本应该可以工作。
答案 4 :(得分:0)
如果您用分号结尾的@section
也是一个问题。就像我在做什么一样
@endsection;
引起错误的原因。当我将其更改为
@endsection
错误消失了。
答案 5 :(得分:0)
否则,您只需在 $ except 数组中传递URl,即可从CSRF验证中排除该URL。
文件
app/Http/Middleware/VerifyCsrfToken.php
赞
protected $except = [
"readPDF/*",
];
此解决方案仅在需要从csrf验证中排除特定URL的情况下适用,请谨慎使用。
答案 6 :(得分:-1)
当您在bootstrap.js文件中使用JavaScript时,您会发现以下行
courses
将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');
}
替换为document.head.querySelector('meta[name="csrf-token"]');
应该是
$('meta[name="csrf-token"]').attr('content');
当您在vue组件中有表单时,这也解决了轴后请求。