使用带有 Laravel 的 Goutte / Guzzle 提交带有 CSRF 的表单

Using Goutte / Guzzle with Laravel to Submit Form with CSRF

我有两个网站(都是我的),我正在测试 Guzzle。

我正在尝试提交搜索表单。此搜索表单具有自动生成的标准 Laravel CSRF 令牌隐藏字段“_token”。

使用 goutte 提交字段时出现错误。在网站上查看我的日志,我可以看到它是 Laravel "TokenMismatchException"

我需要在 goutte 中做一些特殊的事情来确保它发布自动生成的“_token”隐藏字段吗?

您需要为该路由禁用 CSRF 保护。

app/Http/Middleware/VerifyCsrfToken.php 中将此代码添加到 handle() 方法的开头:

$openRoutes = ['free/route', 'free/too'];

foreach($openRoutes as $route) {
    if ($request->is($route)) {
        return $next($request);
    }
}

从 Laravel 5.1 开始,在 app/Http/Middleware/VerifyCsrfToken.php 中,您可以通过将相关路由添加到 $except 数组来禁用 CSRF 保护。像这样:

protected $except = [
    '/api/v1/list', //This route won't have CSRF protection
];