csrf_token() 在 l5-swagger 中是空的,除了 GET 请求外不能做任何请求
csrf_token() is empty in l5-swagger and couldn't do any request except GET request
csrf_token() 在 l5-swagger 中是空的,除了 GET 之外无法执行任何请求,因为缺少 header 并且总是收到 419 错误代码
我试过向邮递员索要它,它成功了。但大摇大摆地没有。我看过这个 link () 但我仍然不知道如何解决我的问题。
如何在我的 l5-swagger 视图中获取 csrf_token?
我认为你应该尝试在 /routes/web 中添加这个。php
Route::group(['middleware' => 'web'], function () {
Route::get('api/documentation', '\L5Swagger\Http\Controllers\SwaggerController@api')->name('l5swagger.api');
});
所以你可以在 l5-swagger 路由上添加 web 中间件
希望对您有所帮助
对于 Laravel 8.x,路由的解决方案对我不起作用。
相反,我修改了文件 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
一切顺利!
None 这些在 Laravel 8.70.1 对我有用。
对我有用的是在我的本地和开发(无 public 访问)环境中禁用 EnsureFrontendRequestsAreStateful::class。然后在我的部署过程 (TeamCity & OctoDeploy) 到暂存和生产中,注释 EnsureFrontendRequestsAreStateful::class 未注释。
Swagger 作为部署过程的一部分被禁用到暂存和生产环境。如果您要构建 SPA,则需要 EnsureFrontendRequestsAreStateful class.
总而言之,禁用 EnsureFrontendRequestsAreStateful::class 应该可以解决问题,但请确保将其放回暂存和生产环境中。
要编辑的文件位于 /app/Http/Kernel.php
//\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:60,1',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\AuthGates::class,
],
csrf_token() 在 l5-swagger 中是空的,除了 GET 之外无法执行任何请求,因为缺少 header 并且总是收到 419 错误代码
我试过向邮递员索要它,它成功了。但大摇大摆地没有。我看过这个 link (
如何在我的 l5-swagger 视图中获取 csrf_token?
我认为你应该尝试在 /routes/web 中添加这个。php
Route::group(['middleware' => 'web'], function () {
Route::get('api/documentation', '\L5Swagger\Http\Controllers\SwaggerController@api')->name('l5swagger.api');
});
所以你可以在 l5-swagger 路由上添加 web 中间件
希望对您有所帮助
对于 Laravel 8.x,路由的解决方案对我不起作用。
相反,我修改了文件 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
一切顺利!
None 这些在 Laravel 8.70.1 对我有用。
对我有用的是在我的本地和开发(无 public 访问)环境中禁用 EnsureFrontendRequestsAreStateful::class。然后在我的部署过程 (TeamCity & OctoDeploy) 到暂存和生产中,注释 EnsureFrontendRequestsAreStateful::class 未注释。
Swagger 作为部署过程的一部分被禁用到暂存和生产环境。如果您要构建 SPA,则需要 EnsureFrontendRequestsAreStateful class.
总而言之,禁用 EnsureFrontendRequestsAreStateful::class 应该可以解决问题,但请确保将其放回暂存和生产环境中。
要编辑的文件位于 /app/Http/Kernel.php
//\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:60,1',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\AuthGates::class,
],