如何使用Guzzle向Laravel中的另一个控制器发送请求

问题描述 投票:0回答:1

我正在尝试使用Guzzle将POST请求发送到模型中routes/web.php中定义的路由。模型和控制器都在同一Laravel应用程序中定义。链接到该路线的控制器动作返回JSON响应,并且在使用Ajax从javascript调用时可以正常工作。但是,当我尝试使用Guzzle进行此操作时,出现以下错误:

GuzzleHttp \ Exception \ ClientException (419)
Client error: `POST https://dev.application.com/login` resulted in a `419 unknown status` response

[寻找解决方案时,我读到它可能是由缺少的csrf令牌引起的,所以我将其添加到了reuqest中,但是仍然出现相同的错误。

这是使用Guzzle发送请求的模型代码:

$client = new Client();
$response = $client->post(APPLICATION_URL.'login', [
    'headers' => [
        'X-CSRF-Token' => csrf_token()
    ],
    'form_params' => [
        'socialNetwork' => 'L',
        'id_token' => $id
    ],
]);

[APPLICATION_URL只是应用程序的基本URL,以https://开头。

我想念什么吗?预先感谢!

php laravel laravel-5.6 guzzle
1个回答
0
投票

不要在您的应用程序内部发送请求,而是将发布的请求发送到路由

$res = Route::dispatch(request()->create(APPLICATION_URL.'login', 'POST', ['socialNetwork' => 'L', 'id_token' => $id])->headers->set('X-CSRF-Token', csrf_token()));
© www.soinside.com 2019 - 2024. All rights reserved.