我正在尝试使用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://
开头。
我想念什么吗?预先感谢!
不要在您的应用程序内部发送请求,而是将发布的请求发送到路由
$res = Route::dispatch(request()->create(APPLICATION_URL.'login', 'POST', ['socialNetwork' => 'L', 'id_token' => $id])->headers->set('X-CSRF-Token', csrf_token()));