【问题标题】:curl not sending cookie valuecurl不发送cookie值
【发布时间】:2023-03-15 02:21:02
【问题描述】:

我想读取登录后通过发送 POST 请求获得的 cookie 值。

然后我想使用 Curl 将该 cookie 值与另一个 POST 请求一起发送到另一个操作。但是,当我尝试查看所有已发布的标头时发送此消息后,它确实显示我已发送任何 cookie 值。此值不适用于我发布的 URL,因此由于身份验证而无法访问该信息。请告诉我哪里做错了:

$URL1        = "http://www.getinf.com/iconf/user?action=buGroup";
$postfields1 = "device=mapp&type=ajax&name1=ra&cc1=91&min1=90name2=imm&cc2=91&min2=97";

// sends a post request
$ch1 = curl_init();   
curl_setopt($ch1, CURLOPT_URL,$URL1); 
curl_setopt($ch1, CURLOPT_POST, 1);

curl_setopt($ch1, CURLOPT_COOKIE,'JSESSIONID=199FFF6355DEA87F3D72E692E7514AD2');
curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch1, CURLOPT_HEADER,true);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch1, CURLOPT_POSTFIELDS, $postfields1);

$result = curl_exec($ch1);

print_r(headers_list());// displays all post request data
$ret = ReturnVal($result);
print_r(get_headers($URL1, 1)); // 
curl_close ($ch1);

那么这段代码有什么问题会阻止 JSESSIONID 值作为 cookie 值访问?

【问题讨论】:

    标签: php cookies curl


    【解决方案1】:

    php docs中查看此页面上的cmets(或搜索“cookie”):

    没有提到的 文档是你必须设置 CURLOPT_COOKIEJAR 到一个文件 实际使用 cookie 的 CURL 句柄, 如果未设置,则 cookie 将不会 被解析。

    【讨论】:

    • 我是使用 curl 的新手,请告诉我如何设置这个 cookiejar。
    【解决方案2】:

    尝试将 CURLOPT_cookie 更改为 CURLOPT_COOKIE

    【讨论】:

      【解决方案3】:

      CURLOPT_COOKIESESSION 用于启动新的 Cookie 会话并忽略所有存储的 cookie。

      来自 PHP.net:使用 CURLOPT_COOKIESESSION = TRUE 将其标记为新的 cookie“会话”。它将强制 libcurl 忽略它即将加载的所有 cookie,这些 cookie 是来自上一个会话的“会话 cookie”。默认情况下,libcurl 始终存储和加载所有 cookie,无论它们是否是会话 cookie。会话 cookie 是没有到期日期的 cookie,它们仅在此“会话”中有效和存在。

      使用:curl_setopt($ch, CURLOPT_COOKIESESSION, false);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-03
        • 2011-04-12
        • 2013-04-06
        • 2012-02-13
        • 1970-01-01
        • 2012-10-13
        • 2012-02-26
        相关资源
        最近更新 更多