如何在 php curl 的 cookie 中设置 JSESSIONID?

How to set JSESSIONID in cookie on php curl?

我正在尝试将第 3 部分 API 集成到 PHP curl 中。

它工作正常,当我在 postman 中尝试时得到了响应。但它在我的 PHP CURL 代码中不起作用。

我发现在邮递员的 header 中设置了 JSESSIONID。我不知道如何在 php curl 中创建 JSESSIONID 并在 cookie 中设置。

有人知道吗?

PHP代码

$url = "http://website.com/Public/login/";
$dataa["userNo"] = "username";
$dataa["userPassword"] = "password";

$data = json_encode($dataa);

$ch = curl_init($url);

$headers = array(
        'Content-type: application/json',
        "Cookie: JSESSIONID=2cba2d9d7dc5455b76t90f4ccac3; httpOnly"
    );


curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Instruct cURL to store cookies in this file.
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');

// Instruct cURL to read this file when asked about cookies.
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');

$response1 = curl_exec($ch);

curl_close($ch);
$res = json_decode($response1,true);

您正在访问的 URL 正在尝试设置 cookie。

要使用 cURL 接受 cookie,您需要指定一个 "cookie jar",一个 cURL 可以存储它接收到的 cookie 的文件:

// Instruct cURL to store cookies it receives in this file.
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt');

// Instruct cURL to read this file when asked about cookies.
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt');

JSESSIONID 听起来像 "session ID" cookie,用于跟踪会话或一系列请求的东西。会话 ID 2cba2d9d7dc5455b76t90f4ccac3 与您使用 Postman 启动的会话相关联,您需要将其从 PHP 请求中删除。