Cookies в UIWebView - PullRequest
       38

Cookies в UIWebView

9 голосов
/ 05 сентября 2010

У меня есть UIWebView, и я не хочу, чтобы он сохранял куки, поэтому перед загрузкой веб-просмотра я делаю:

NSArray* cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
for (NSHTTPCookie *cookie in cookies) {
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}

Проверка количества файлов cookie равна 0, поэтому они всеудален.Но когда я захожу в stackoverflow, он все равно распознает мою учетную запись Google и регистрирует меня. Как это происходит?Я думал, что это работает с куки?

Ответы [ 3 ]

7 голосов
/ 12 июля 2011

Мне пришлось иметь дело с точно такой же проблемой, и я нашел 2 способа решить эту проблему.Я впервые заметил, что файлы cookie (иногда) устанавливаются в странные моменты времени (странное поведение, особенно в ios 4.0).

  • Мгновенное удаление файлов cookie после посещения пользователем веб-сайта часто не давало мне ожидаемогорезультаты.

Затем я включил постоянный ручной флаг, который был установлен в True для действия «выход из системы» (то есть очистить все файлы cookie / удалить другие данные пользователя).при следующем входе в систему (так называемое действие на основе входа в систему пользователя) я снова очистил куки (так же, как вы делали это в своем посте с кодом).

Позже я узнал, что прослушивание NSHTTPCookieManagerCookiesChangedNotificationтогда удаление файлов cookie работало очень хорошо.

надеюсь, что смогу помочь.

6 голосов
/ 02 февраля 2011

Попробуйте вместо этого изменить политику принятия файлов cookie:

[NSHTTPCookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyNever];
0 голосов
/ 30 ноября 2015

Используйте следующее, и оно будет работать ..

   NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
   NSHTTPCookie *cookie;
   for(cookie in [storage cookies])
    {
      NSLog(@"cookie to be deleted:%@", cookie);
      [storage deleteCookie:cookie];
    }
   [[NSUserDefaults standardUserDefaults] synchronize];

здесь не пропустите последнюю строку [[NSUserDefaults standardUserDefaults] synchronize]; в противном случае вы останетесь загадкой.

...