Как очистить куки через функцию WinINet?

Используя функции WinINet InternetGetCookie и InternetSetCookie, довольно просто получить и установить cookie внутри приложения, которое делает веб-запрос через WinINet.

Однако я пока не смог найти способ очистить куки.

Вызов InternetSetCookie с пустыми данными (либо L"", либо NULL) не помогает (пробовал и с указанием имени куки, и без).

Пробовал FindFirst/NextUrlCacheGroup, DeleteUrlCacheGroup, а также FindFirst/NextUrlCacheEntry, DeleteUrlCacheEntry комбинации. Все равно не повезло.

Любые идеи?


person Kei    schedule 16.06.2011    source источник


Ответы (3)


Кей,

У меня была такая же проблема, и мой коллега только что помог мне ее решить. Вам нужно позвонить:

InternetSetOption(0, 42, NULL, 0);

Ответ взят из здесь.

Это сработало для моего приложения, и я надеюсь, что оно сработает и для вас.

Изменить:
Значение "42" в вызове функции означает флаг "INTERNET_OPTION_END_BROWSER_SESSION", который "удаляет неиспользуемые записи из кэша паролей на жестком диске. Также сбрасывает кэш время, используемое, когда режим синхронизации один раз за сеанс. Для этой опции буфер не требуется. Используется InternetSetOption." ( http://msdn.microsoft.com/en-us/library/aa385328%28v=vs.85%29.aspx )

person vladges    schedule 26.08.2011
comment
Естественно, ответ 42. - person JLRishe; 29.05.2013

Это довольно старый пост, но я подумал, что добавлю свои выводы, так как столкнулся с похожей проблемой: чтобы очистить файл cookie, вам нужно установить дату истечения срока его действия на дату в прошлом. Это работает и для сеансовых файлов cookie:

InternetSetCookie("http://someurl.com", "mycookie" "somevalue;expires=Mon, 01 Jan 0001 00: 00:00 по Гринвичу");

person Mark    schedule 12.01.2015

Нажмите кнопку «Исключить…» в диалоговом окне «Свойства обозревателя» (вкладка «Общие»).

Свойства Интернета / вкладка

Установите только флажок «Файлы cookie и данные сайта». Используйте монитор API (http://www.rohitab.com/apimonitor), чтобы отслеживать диалоговое окно. «Удалить историю просмотров»

Удалить историю браузера

Посмотрите, что сделано, и выполните то же самое, используя представленные функции Windows API. Я нашел решение таким образом

person Carlos B. Feitoza Filho    schedule 22.04.2020