Как очистить cookie через функцию WinINet? - PullRequest
3 голосов
/ 16 июня 2011

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

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

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

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

Есть идеи?

Ответы [ 2 ]

7 голосов
/ 26 августа 2011

Kei

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

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)

0 голосов
/ 13 января 2015

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

InternetSetCookie (somevalue "http://someurl.com"," mycookie ""; истекает = понедельник, 01 января 0001 00:00:00 GMT ");

...