diff --git a/ios/RNCookieManagerIOS/RNCookieManagerIOS.m b/ios/RNCookieManagerIOS/RNCookieManagerIOS.m index bde2385..0e76dba 100644 --- a/ios/RNCookieManagerIOS/RNCookieManagerIOS.m +++ b/ios/RNCookieManagerIOS/RNCookieManagerIOS.m @@ -195,7 +195,7 @@ + (BOOL)requiresMainQueueSetup WKHTTPCookieStore *cookieStore = [[WKWebsiteDataStore defaultDataStore] httpCookieStore]; [cookieStore getAllCookies:^(NSArray *allCookies) { for (NSHTTPCookie *cookie in allCookies) { - if ([name isEqualToString:cookie.name]) { + if ([name isEqualToString:cookie.name] && [self isMatchingDomain:topLevelDomain cookieDomain:cookie.domain]) { [foundCookiesList addObject:cookie]; foundCookies = @YES; } @@ -212,7 +212,7 @@ + (BOOL)requiresMainQueueSetup } else { NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (NSHTTPCookie *c in cookieStorage.cookies) { - if ([[c name] isEqualToString:name]) { + if ([[c name] isEqualToString:name] && [self isMatchingDomain:url.host cookieDomain:c.domain]) { [cookieStorage deleteCookie:c]; foundCookies = @YES; } @@ -337,4 +337,14 @@ -(NSDictionary *)createCookieData:(NSHTTPCookie *)cookie return cookieData; } +-(BOOL)isMatchingDomain:(NSString *)originDomain + cookieDomain:(NSString *)cookieDomain +{ + if ([originDomain isEqualToString: cookieDomain]) { + return @YES; + } + NSString *parentDomain = [cookieDomain hasPrefix:@"."] ? cookieDomain : [@"." stringByAppendingString: cookieDomain]; + return [originDomain hasSuffix:parentDomain]; +} + @end