如何在curl php中发送第二个请求时保留会话?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在curl php中发送第二个请求时保留会话?相关的知识,希望对你有一定的参考价值。

我的问题是,当我第一次将数据从php同步到节点js时,我登录到node.js应用程序。但是在我第二次请求发送数据后登录时,会话没有发送curl请求,因此显示“未登录”。

它是我的登录卷曲代码:

$data_string = json_encode(['userid' => $user_name, 'password' => $password]);
$URL = $url;     

$ch = curl_init('http://192.168.1.16:8000/auth/login');                                                                      
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string))                                                                 
);

$result = curl_exec($ch);

它正在发送数据Curl代码:

$data_string = json_encode(['import_export' =>$json]);                                                                                   

https://stackoverflow.com/users
    $ch = curl_init();
    curl_setopt_array($ch, array(
        CURLOPT_URL => 'http://192.168.1.16:8000/api/all',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => $data_string,
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_HTTPHEADER => array(                                                                          
            'Content-Type: application/json',                                                                                
            'Content-Length: ' . strlen($data_string)
        )
    ));

    $result = curl_exec($ch);
答案

告诉cURL使用cookies:

curl_setopt(CURLOPT_COOKIEJAR, '/tmp/cookies.txt');
curl_setopt(CURLOPT_COOKIEFILE, '/tmp/cookies.txt');

这样,默认的基于Node / Express会话cookie的身份验证应该有效,因为会话cookie将在登录时保存并随后发送请求。

http://php.net/manual/en/function.curl-setopt.php

以上是关于如何在curl php中发送第二个请求时保留会话?的主要内容,如果未能解决你的问题,请参考以下文章

python - 使用 curl 发送请求时,Flask 可以处理会话吗? [复制]

启动第二个会话时,MVC 中的路由如何发生?

在laravel中重定向到外部url时如何保留会话数据

php中使用curl

为 curl 请求选择传出 IP

为啥 jQuery 的 .ajax() 方法不发送我的会话 cookie?