簡體   English   中英

PHP-CURL-Set-Cookie標頭(忽略點)

[英]PHP - CURL - Set-Cookie Header (Ignoring dots)

我試圖通過登錄到外部站點並稍后使用此值執行不同的操作來獲取Set-Cookie值。 我無法使用CookieJar保存它,我需要從函數返回字符串。

無論如何。 預期的Cookie應該如下所示:“ JSESSIONID = 123.cls_rs2a_8009”,但我卻收到了“ JESSIONID = 123”

因此,它似乎忽略了點之后的所有內容-或它沒有像瀏覽器一樣接收到它。

有什么幫助嗎?

當前代碼示例未顯示網址:

$headers = [];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADERFUNCTION,
    function($curl, $header) use (&$headers){
        $len = strlen($header);
        $header = explode(':', $header, 2);
        if (count($header) < 2)
             return $len;

        $name = strtolower(trim($header[0]));
        if (!array_key_exists($name, $headers))
            $headers[$name] = [trim($header[1])];
        else
            $headers[$name][] = trim($header[1]);
        return $len;
    }
);

$data = curl_exec($ch);
var_dump($headers);

可能使用Guzzle應該更容易一些。 Guzzle Docs

// Use a specific cookie jar
$jar = new \GuzzleHttp\Cookie\CookieJar;
$r = $client->request('GET', 'http://httpbin.org/cookies', [
    'cookies' => $jar
]);

在您的示例中,似乎您缺少響應頭

// get headers too with this line
curl_setopt($ch, CURLOPT_HEADER, 1);

您也可以嘗試獲取完整的Cookie列表

curl_getinfo($curl, CURLINFO_COOKIELIST);

這種麻煩也派上用場: 食糖餅干處理

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM