csrf_token()在l5-swagger中为空,除GET之外无法执行任何请求,因为标头丢失并且始终获得419错误代码
我尝试向邮递员索取,并且可以使用。但是大摇大摆却没有。我从此链接(laravel 5 csrf_token value is Empty)看了一眼,但我仍然不知道如何解决我的问题。
如何在l5-swagger视图中获取csrf_token?
答案 0 :(得分:2)
我认为您应该尝试将其添加到/routes/web.php
Route::group(['middleware' => 'web'], function () {
Route::get('api/documentation', '\L5Swagger\Http\Controllers\SwaggerController@api')->name('l5swagger.api');
});
因此您可以在l5-swagger路由上添加Web中间件
希望对您有帮助
答案 1 :(得分:0)
对于 Laravel 8.x,Routes 的解决方案对我不起作用。
相反,我修改了文件 config/l5-swagger.php
您必须向 defaults[routes][middleware][api]
添加多个条目。默认情况下,此条目应为空。
要修复 CSRF 验证,您必须添加:
...
'api' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
...
之后只需清除配置缓存
php artisan config:cache
你可以走了!