卷曲与拉拉维尔返回会话已过期



我将 curl 与 laravel 一起使用,我需要在控制器中启动一个函数。

但是当我把

dd('test'); 

在命名空间之后它是打印的,但是当我尝试使用函数 a 有一个会话过期

时这是卷曲的代码

// Préparation des données
$data = [];
$data["code__client"] = "VERTDIS13";
$data["status"] = "90";
$data["numero__incident"] = "INC544842";
// On tranforme le tableau PHP en objet JSON
$data = json_encode($data);
// Envoi au serveur
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"http://localhost:3000/notification/server");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "data=" . $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, true);
$server_output = curl_exec($ch);
$error = curl_error($ch);
if($error!=""){ dd($error);}
curl_close($ch);

// Ici pour tester j'affiche ce que le serveur renvoi
return $server_output;

在控制器内部,我尝试打印数据,但它不起作用

你看到问题了吗?

感谢您的帮助.

会话过期响应对我来说听起来好像您正在对应用程序执行多个连续的 curl 请求。如果是这种情况,并且您的应用程序依赖于会话 Cookie,您可以创建一个简单的文本文件,该文件可读写到执行 curl 请求的脚本中,并将其添加到您的代码中:

$cookie_file = "/the/path/to/your/cookiefile.txt";
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

$cookie_file中的路径更改为您创建的文本文件的完整文件系统路径,curl 将保留随响应一起返回的会话 cookie,并在连续的请求中使用它们。 为此,我认为您应该删除该行

curl_setopt($ch, CURLOPT_COOKIESESSION, true);

因为这会建议 curl 忽略文件中的 cookie。

除此之外,我认为这条线

curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, true); 

也已过时,因为您没有在 curl 请求中提供基本的身份验证凭据。

我想你从应用程序中提取数据? 对我来说,CSRF令牌似乎丢失或实际上无效。

for ($i = 0; $i < $metas->length; $i++){
$meta = $metas->item($i);
if($meta->getAttribute('name') == 'csrf-token')
$csrfToken = $meta->getAttribute('content');
}
$headers = array();
$headers[] = "Cookie: X-CSRF-Token=$csrfToken";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

更多关于CSRF和cURL

试一试

最新更新