2

私の質問に対する答えを得るために、StackOverflow に関するほとんどすべての質問を検索しました。特定のドメインの Cookie をクリアするのに最適な方法を示す有用なリンクやチュートリアルは見つかりませんでした。誰かが私を助けることができればお願いします。

4

1 に答える 1

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];

1 つのサイトまたはドメインに固有の 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 を削除するサイトに置き換えます。すべてのドメインにはサブドメインがあることを知っておく必要があります。その場所にグローバル ドメイン名を指定すると、サブドメインの Cookie は削除されません。LinkedIn の例では、in.linkedIn.com、api.linkedIn.com などの多くのサブドメインがあります。グローバル ドメイン名であるhttp://www.linkedin.comを指定すると、サブドメインの Cookie は削除されません。

NSHTTPCookie にはドメイン プロパティがあるため、それを使用してすべてのドメイン名を取得し、rangeOfString: NSString のメソッドを使用して、文字列 (たとえば、リンクイン) を持つドメインを取得します。それを削除すると、すべてのドメインの Cookie が削除されます。

少なくとも私の投稿が将来誰かに役立つことを願っています。

于 2012-10-23T08:49:04.053 に答える