2012-10-23 54 views
1

我已經在StackOverflow上搜索了幾乎所有的問題以回答我的問題。我還沒有找到任何有用的鏈接或教程,說明哪種方式最好清除特定域的Cookie。 所以請如果有人能幫助我。如何清除iOS中特定域的Cookie?

+1

這個問題可以幫助你 http://stackoverflow.com/questions/8154428/clear-cookies-for-a-given-ios-app?answertab=votes#tab-top –

+0

我找到了解決辦法。我想幫助有同樣問題的人。沒有與我的問題有關的完美答案。 –

回答

8

我自己找到解決方案。 如果你想刪除你的UIWebView中的整個cookie,請執行此操作。

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

如果您想刪除特定於一個站點或域的cookie,請執行此操作。

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
NSHTTPCookie *cookie; 
for(cookie in [storage cookies]) { 
    if([[cookie domain] rangeOfString:@"siteName(or)domainName"].location != NSNotFound) { 
    NSLog(@"cookie to be deleted:%@", cookie); 
    [storage deleteCookie:cookie]; 
    } 
} 

在上面的代碼中,我用siteName(或)DomainName替換了要刪除cookie的站點。你必須知道每個域都有子域。如果您在該地點提供gobal域名,則不會刪除子域名的cookie。 例如LinkedIn,它有許多子域名,如in.linkedIn.com,api.linkedIn.com等。如果我給http://www.linkedin.com這是gobal域名,它不會刪除子域的cookie。

NSHTTPCookie具有域屬性,因此使用它來獲取所有域名並使用rangeOfString:NSString方法獲取具有您的字符串的域(例如linkedin)。刪除它會刪除所有域的cookie。

我沒有人幫助我希望至少我的帖子能幫助未來的人。