使用带有 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
];
我有两个网站(都是我的),我正在测试 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
];