【问题标题】:How to send a form via postman/insomnia http client on a Laravel controller?如何通过 Laravel 控制器上的邮递员/失眠 http 客户端发送表单?
【发布时间】:2019-03-06 10:05:17
【问题描述】:

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

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

    }
}

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

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

【问题讨论】:

    标签: laravel insomnia


    【解决方案1】:

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

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

    网络中间件组为您的项目添加大量中间件,例如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 之类的应用发出请求。

    【讨论】:

    • 谢谢。但我想了解为什么我不能通过 http 客户端发送表单?我已在字段集中添加了令牌。那么真实的形式和我的模拟有什么区别呢?
    • 如何计算_token字段?
    • Easy) 在前端 <h1>{{ csrf_token() }}</h1> 和 CTRL + F5
    • 您有 2 个选项:1) 将此路由添加到 app/http/middleware/VerifyCsrfToken 中的 except 数组中 2) 将 cookie 添加到您的请求中,因为 Laravel 会同时检查 cookie 和 _token 字段
    • 好的,第二个选项看起来很有趣!我会试试的。
    猜你喜欢
    • 2019-02-11
    • 1970-01-01
    • 2016-03-27
    • 2013-09-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 2019-03-26
    • 2017-07-20
    相关资源
    最近更新 更多