CURL — Set-Cookie Header (игнорирование точек)

Я пытаюсь получить значение Set-Cookie, войдя на внешний сайт и позже используя это значение для выполнения различных действий. Я не могу сохранить его с CookieJar, мне нужно вернуть строку из функции.

Тем не мение. Ожидаемый файл cookie должен выглядеть следующим образом: «JSESSIONID = 123.cls_rs2a_8009», но я получаю «JESSIONID = 123»

Таким образом, он, кажется, игнорирует все после точки — ИЛИ не получает его так же, как браузер.

Любая помощь в этом?

Пример текущего кода не показывает URL:

$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);

0

Решение

Вероятно, использование Guzzle должно быть немного проще. От Жадные Документы:

// 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);

Эта миг также пригодится: Обработка печенья

Надеюсь, это поможет.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector