在路由到API中间件Laravel 5.2.35时始终调用VerifyCsrfToken

时间:2016-05-31 14:42:40

标签: laravel cookies header request csrf

我有两个类似的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客户端中检查请求标头。我找到了这个。

第一个项目结果:

enter image description here enter image description here

第二个项目结果:

enter image description here enter image description here

第一个结果在请求标头中有cookie属性,但第二个结果没有

3 个答案:

答案 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/*'
];