我在 Laravel 中遇到 csrf 令牌问题。有时请求 POST(通过 axios)返回 419 代码“CSRF 令牌不匹配”,但请求标头包含 CSRF 和 XSRF 令牌。有趣的是,它不会在隐身模式下发生。
应用程序刀片:
<meta name="csrf-token" content="{{ csrf_token() }}">
引导程序.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,
],
我试图清除缓存和配置但没有结果。任何想法如何解决它?
原文由 serpentow 发布,翻译遵循 CC BY-SA 4.0 许可协议
有时?!听起来像
expired token
。当你在
incognito tabs
工作时,你有一个新的令牌。尝试
location.reload()
当你得到419 error code
一切顺利。