路由到 API 中间件 Laravel 5.2.35 时总是调用 VerifyCsrfToken
VerifyCsrfToken always called when route to API Middleware Laravel 5.2.35
我有两个类似的 Laravel 项目。这是 kernel.php 的部分代码。两个项目都有相同的代码。
protected $middlewareGroups = [
'web' => [
\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,
],
'api' => [
'throttle:60,1',
],
];
但是,尽管我将路由放在 api
middlewareGroup 中,但始终会调用 VerifyCsrfToken。
我在高级 REST 客户端中检查请求 header。我找到了这个。
第一个项目结果:
第二个项目结果:
第一个结果在请求中有 cookie 属性 header,但第二个结果没有
使用没有任何中间件的路由,它不再需要 csrf 令牌。
routes.php
中的所有路由都包含在应用了 'web' 中间件的路由组中。您可能应该创建另一个路由文件,并让 RouteServiceProvider 在 'api' 且不应用 'web' 中间件的情况下加载这些路由文件。
如果你打开你的 RouteServiceProvider 你会看到这是在哪里发生的。检查 map
方法以查看它调用 mapWebRoutes
.
您可以通过将 URI 添加到 $except 属性 来跳过对 app/Http/Middleware/VerifyCsrfToken.php
中所有 api 链接的 csrf 令牌检查。示例:
protected $except = [
'/api/*'
];
我有两个类似的 Laravel 项目。这是 kernel.php 的部分代码。两个项目都有相同的代码。
protected $middlewareGroups = [
'web' => [
\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,
],
'api' => [
'throttle:60,1',
],
];
但是,尽管我将路由放在 api
middlewareGroup 中,但始终会调用 VerifyCsrfToken。
我在高级 REST 客户端中检查请求 header。我找到了这个。
第一个项目结果:
第二个项目结果:
第一个结果在请求中有 cookie 属性 header,但第二个结果没有
使用没有任何中间件的路由,它不再需要 csrf 令牌。
routes.php
中的所有路由都包含在应用了 'web' 中间件的路由组中。您可能应该创建另一个路由文件,并让 RouteServiceProvider 在 'api' 且不应用 'web' 中间件的情况下加载这些路由文件。
如果你打开你的 RouteServiceProvider 你会看到这是在哪里发生的。检查 map
方法以查看它调用 mapWebRoutes
.
您可以通过将 URI 添加到 $except 属性 来跳过对 app/Http/Middleware/VerifyCsrfToken.php
中所有 api 链接的 csrf 令牌检查。示例:
protected $except = [
'/api/*'
];