Сохраняет ли NSURLConnection файлы cookie, автоматически отправленные с сервера?
Я вошел в свой торнадо-бэкэнд из ios и отправил обратно secure_cookie, и я заметил, что могу также запрашивать другую информацию, пока я проверяю secure_cookie, который я установил. Как долго NSURLConnection сохраняет cookie или будет удален после закрытия приложения?
Это упоминается в документации Apple:
Система загрузки URL автоматически отправляет любые сохраненные куки, подходящие для NSURLRequest. если в запросе не указано, что куки не отправляются.
2 ответа
Несколько аспектов вашего вопроса.
Для начала NSURLConnection по умолчанию будет управлять файлами cookie на основе настроек устройства. Он сохранит файлы cookie в магазине и отправит их соответствующим образом (когда домен соответствует существующему файлу cookie). Это означает, что если вы сделаете запрос с URL-адреса с cookie-файлом, сохраненным в хранилище cookie, он будет отправлен. Это объясняет поведение, которое вы упомянули. Как правило, при настройках по умолчанию cookie сохраняется в течение достаточно долгого времени.
Это первоначальное утверждение, однако, может быть не полезно для ваших нужд. Я предполагаю, что вы, возможно, захотите контролировать истечение срока действия (или держать его навсегда) secure_cookie
поле, так что ваше приложение не должно проходить дальнейшую аутентификацию в будущем.
В этом случае, NSHTTPCookieStorage
это место, чтобы посмотреть. Этот класс позволит вам оба получить:
[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL: [NSURL URLWithString: @ " http://example.com/"]]
и установить:
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie]
(плюс настройка объекта словаря cookie)
Основываясь на опыте и отзывах других пользователей в Интернете, следует помнить, что хранение файлов cookie не всегда надежно на 100%. Если вы хотите отправить конкретный файл cookie и значение на сервер, вы должны сохранить это значение в своем приложении (например, prefs или Core Data) и сбросить файл cookie с помощью соответствующего NSHTTPCookieStorage
при каждом запуске.
Вы должны посмотреть на управление кэшем cookie здесь. Это поможет вам лучше понять, как обрабатывается кэширование cookie.
Есть еще одно очень хорошее описание, где упоминается, что вы можете получить cookie из полей заголовков, и тогда у вас есть полный контроль над ним. Если хотите, сохраняйте и используйте при повторном запуске приложения.
Я надеюсь, что это должно помочь вам решить это.