Удалить куки UIWebView - PullRequest
       28

Удалить куки UIWebView

5 голосов
/ 27 сентября 2011

Как удалить куки в UIWebView?Этот код:

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

удаляет файлы cookie, но при перезапуске приложения в NSHTTPCookieStorage появляются те же файлы cookie.Иногда этот код работает, но я хочу, чтобы он работал каждый раз. Как решить эту проблему?

Ответы [ 5 ]

7 голосов
/ 21 октября 2012

Это сработало для меня:

NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];

NSArray *allCookies = [cookies cookies];

for(NSHTTPCookie *cookie in allCookies) {
    if([[cookie domain] rangeOfString:@"facebook.com"].location != NSNotFound) {
        [cookies deleteCookie:cookie];
    }
}
6 голосов
/ 27 сентября 2011

Попробуйте что-то вроде этого:

NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
        NSArray* facebookCookies = [cookies cookiesForURL:
                                    [NSURL URLWithString:@"http://login.facebook.com"]];
        for (NSHTTPCookie* cookie in facebookCookies) {
            [cookies deleteCookie:cookie];
        }
3 голосов
/ 06 мая 2014

удаление одного куки не всегда работает по какой-то странной причине.Чтобы действительно удалить cookie, вам нужно сохранить не определенный cookie, а затем перезагрузить его, а затем перебрать все cookie и удалить их, например,

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
   if (cookies != nil && cookies.count > 0) {
       for (NSHTTPCookie *cookie in cookies) {
           [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
       }
       [[NSUserDefaults standardUserDefaults] synchronize];
   }
0 голосов
/ 26 января 2016

Аналогично предыдущему, но проще:

NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];

NSArray *allCookies = [cookies cookies];

for(NSHTTPCookie *cookie in allCookies) {
    if([[cookie domain] contains:@"facebook.com"]) {
        [cookies deleteCookie:cookie];
    }
}

«Лучший ответ» плох, потому что он позволяет удалять куки для указанных конкретных URL. Так, например, вы удаляете cookie для «login.facebook.com», но можете пропустить «www.login.facebook.com»

0 голосов
/ 09 сентября 2014

Обязательно позвоните:

[[NSUserDefaults standardUserDefaults] synchronize];

в конце концов ... Работает как шарм ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...