3

我有一个带有以下代码的控制器

class FormController extends Controller
{
    public function submit(Request $request)
    {
        dd($request);

    }
}

我记得关于csrf保护的事,我csrf在前端找到了我的令牌。因此,我已将其添加到 http 客户端失眠的字段中。但结果我有以下

在此处输入图像描述

内容类型是multipart/form-data. 怎么了?

4

1 回答 1

3

Laravel 有一个叫做 web 的中间件组来保护你的路由。它在web.php文件里面。您可以在中看到路由中间件app/Providers/RouteServiceProvider.php

protected function mapWebRoutes()
{
    Route::middleware('web')
         ->namespace($this->namespace)
         ->group(base_path('routes/web.php'));
}

Web 中间件组向您的项目添加大量中间件,例如VerifyCsrfToken

你可以在 `app/Http/Kernel.php' 中看到它们的列表

protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\Session\Middleware\StartSession::class,
         \Illuminate\Session\Middleware\AuthenticateSession::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
    ],

    'api' => [
        'throttle:60,1',
        'bindings',
    ],
];

你可能知道,Laravel 有另一个名为 api 的中间件和路由文件夹,它没有任何 CSRF 保护。您可以声明不需要 CSRF 保护的路由(我的意思是您的应用程序的 API)route/api.php

通过在文件中声明这种路由,route/api.php您可以轻松地使用 Postman/Insomnia 之类的应用程序发出请求。

于 2019-03-06T10:17:50.437 回答