NSHTTPCookieStorage и срок действия файлов cookie
В нашем приложении для iPhone мы используем два куки во время общения с сервером. Один из них - короткий сессионный cookie (JSESSION), а другой - длинный сессионный cookie (MEMEMBER ME). Если ответ приходит с сервера, он отправляет короткий сеансовый файл cookie, который я могу найти в NSHTTPCookieStorage.
У меня вопрос, как это хранилище обрабатывает срок годности куки? Поэтому, если срок действия файла cookie истекает, автоматически ли он удаляется, и если я пытаюсь получить этот файл cookie по его имени из хранилища после истечения срока действия, получу ли я что-нибудь? Или я должен проверить срок действия вручную?
2 ответа
У меня вопрос, как это хранилище обрабатывает срок годности куки?
NSHTTPCookieStorage хранит объекты NSHTTPCookie, срок действия которых истекает, как одно из его свойств.
Поэтому, если срок действия файла cookie истекает, он автоматически удаляет этот файл cookie, и если я пытаюсь получить этот файл cookie по его имени из хранилища после истечения срока действия, получу ли я что-нибудь? Или я должен проверить срок действия вручную?
Вы должны вручную проверить срок действия и удалить куки самостоятельно
The receiver’s expiration date, or nil if there is no specific expiration date such as in the case of “session-only” cookies. The expiration date is the date when the cookie should be deleted.
Чтобы быть более практичным...
+(BOOL) isCookieExpired{
BOOL status = YES;
NSArray *oldCookies = [[ NSHTTPCookieStorage sharedHTTPCookieStorage ]
cookiesForURL: [NSURL URLWithString:kBASEURL]];
NSHTTPCookie *cookie = [oldCookies lastObject];
if (cookie) {
NSDate *expiresDate = [cookie expiresDate];
NSDate *currentDate = [NSDate date];
NSComparisonResult result = [currentDate compare:expiresDate];
if(result==NSOrderedAscending){
status = NO;
NSLog(@"expiresDate is in the future");
}
else if(result==NSOrderedDescending){
NSLog(@"expiresDate is in the past");
}
else{
status = NO;
NSLog(@"Both dates are the same");
}
}
return status;
}