【发布时间】:2020-04-14 08:19:35
【问题描述】:
我对 Laravel 中的 csrf 令牌有疑问。有时请求 POST(通过 axios)返回 419 代码“CSRF 令牌不匹配”,但请求标头包含 CSRF 和 XSRF 令牌。有趣的是,它不会在隐身模式下发生。
App.blade:
<meta name="csrf-token" content="{{ csrf_token() }}">
bootstrap.js:
window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
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');
}
内核.php:
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Localization::class,
],
我试图清除缓存和配置,但没有结果。任何想法如何解决它?
【问题讨论】:
-
你说它有时有效有时无效?提交表单时会失败吗?
-
这是随机发生的(例如当用户尝试注销或通过表单发送消息时)。
-
我推荐this article。
标签: laravel vue.js csrf csrf-token