Ответ выше неправильный.CInternetSession действительно обрабатывает куки.Если ответ http в рамках этого сеанса возвращает заголовок Set-Cookie, файл cookie будет автоматически сохранен объектом сеанса и возвращен на сервер при последующих запросах.Нет необходимости использовать SetCookie ().
Однако есть несколько предостережений и ловушек: Файлы cookie, возвращаемые без даты истечения срока действия, являются файлами cookie сеанса и сохраняются только в MEMORY.Когда объект CInternetSession уничтожен, они исчезают навсегда.
Можно установить флаги в объекте CInternetSession с помощью SetOption и для запросов, которые отключают куки.Смотрите флаги INTERNET_OPTION_SUPPRESS_SERVER_AUTH и INTERNET_FLAG_NO_COOKIES.Береги себя, чтобы ты этого не сделал.
Остерегайтесь кэширования.ПОЛУЧИТЕ сценарий один раз, чтобы получить cookie, затем ПОЛУЧИТЕ его снова, чтобы напечатать возвращенный файл cookie.И это не работает!Печенье не печатается.Зачем?Потому что «файл» кешируется.При втором вызове wininet не связывается с сервером, он снова дает вам старый ответ, который, конечно, не распечатал куки.Чтобы избежать этого, вы должны использовать флаг INTERNET_FLAG_RELOAD.Вот суть:
int flags = INTERNET_FLAG_RELOAD;
int port = INTERNET_DEFAULT_HTTP_PORT;
CHttpConnection *connection = session.GetHttpConnection("www.example.com", flags, port);
CHttpFile *fil = connection->OpenRequest(CHttpConnection::HTTP_VERB_GET, "cgi-bin/test.pl",
0,1,0, "HTTP/1.1", flags);
fil->SendRequest();
Также обратите внимание, что если файл cookie задается сценарием с URL-адресом http: //example.com/cgi-bin/test.pl, он связан с URL-адресом http: //example.com/cgi-bin/, поэтому будет возвращен сценарий http: //example.com/cgi-bin/hello.pl.Заголовок cookie может изменить это поведение.