@Flysink

Как правильно повторно отправить cookies?

Всем привет!
Не получается сохранить cookies и использовать повторно в другом запросе, минимальный пример:

Есть одна кнопка в виджете, по которой происходит вызов функции print_inf()
Файл widget.h

void print_inf() {
CURL *curl;
struct curl_slist *cookies;


файл widget.cpp

CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL); 
curl = curl_easy_init();
if(curl) {
  curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");
  curl_easy_setopt(curl, CURLOPT_COOKIELIST, &cookies);
  res = curl_easy_perform(curl);
if(res != CURLE_OK) {
    qDebug() << "bad connect\n";
    fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));
}
else {
    res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
    struct curl_slist *nd;
    nd = cookies;
    qDebug() << "parse cookies";
    while(nd)
    {
       const auto &p = nd->data;
       qDebug() << p;
       const auto &next = nd->next;
       nd = next;
     }
}
curl_easy_cleanup(curl);
}
curl_global_cleanup();
}


На стороне сервера устанавливаю cookies
setcookie("nameCookie", 100, time() + 3600 * 60,'/', '192.168.0.55');
setcookie("nameCookie2", 100, time() + 3600 * 60,'/', '192.168.0.55');
Если сделать редирект - cookies правильно устанавливаются и в headers это будет видно [cookies] => nameCookie=value; nameCookie2=value\n

Но если заново запустить функцию print_inf()
и на сервере проверить на существования cookies
if(isset($_COOKIE["nameCookie"],$_COOKIE["nameCookie2"])) echo 'yes' else 'no';

Cookies не передаются и заголовок пуст:
Array\n(\n    [Host] => 192.168.0.55\n    [User-Agent] => Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)\n    [Accept] => */*\n    [test] => 500\n    [test2] => 700\n    [Content-Length] => 25\n    [Content-Type] => application/x-www-form-urlencoded\n)

Делаю повторный запрос когда уже были установлены cookies, проверяю структуру (struct curl_slist *cookies), и вижу что все в порядке, данные о cookies записаны, но почему не передаются ?
192.168.0.55	FALSE	/	FALSE	1539293470	nameCookie	100
192.168.0.55	FALSE	/	FALSE	1539293470	nameCookie2	100
  • Вопрос задан
  • 185 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы