我有两个类似的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客户端中检查请求标头。我找到了这个。
第一个项目结果:
第二个项目结果:
第一个结果在请求标头中有cookie属性,但第二个结果没有
答案 0 :(得分:0)
使用没有任何中间件的路由,不再需要csrf令牌。
答案 1 :(得分:0)
routes.php
中的所有路由都包含在具有' web'的路由组中。应用中间件。你可能应该创建另一个路由文件,让RouteServiceProvider加载一个组中的' api'没有网络'应用中间件。
如果您打开RouteServiceProvider,您将看到这发生了什么。检查map
方法,看是否正在调用mapWebRoutes
。
答案 2 :(得分:0)
您可以通过将URI添加到$ except属性来跳过app/Http/Middleware/VerifyCsrfToken.php
中所有api链接的csrf令牌检查。例如:
protected $except = [
'/api/*'
];