Как я могу запретить своему приложению выходить из сеанса в Safari? - PullRequest
0 голосов
/ 29 февраля 2012

Мой инструмент тестирования командной строки, использующий NSURLConnection, вмешивается в файлы cookie Safari.Как мне предотвратить это?

Вот что я вижу:

  1. Я захожу на веб-сайт в Safari.
  2. Я запускаю свою командную строкуИнструмент синхронизации на основе.
  3. Инструмент синхронизации входит в систему и получает несколько страниц данных.Для каждого запроса cookie переворачивается.(Инструмент синхронизации не выходит из системы.)
  4. Я возвращаюсь в Safari и щелкаю ссылку.Ссылка возвращает меня на экран входа в систему.

Если я пропущу шаг 2-3, ссылка в Safari будет работать правильно.Мой инструмент, очевидно, является причиной этого.

Я создаю свои соединения следующим образом:

_connection = [[NSURLConnection alloc] initWithRequest: request
                                              delegate: self
                                      startImmediately: NO];

Я не делаю ничего явно с куки, но просто позволяю код по умолчаниюсправиться с ними.

Я не уверен, что на самом деле здесь происходит.Если Safari и мое приложение действительно поделились файлами cookie, не будет ли копия cookie в Safari также пролонгирована?Хотя странное поведение, все будет работать, и я даже не буду знать, что происходит.Это что-то еще.

В любом случае, как я могу запретить моему инструменту командной строки выводить людей из их сеанса в Safari?

1 Ответ

1 голос
/ 01 марта 2012

Похоже, что правильный подход - полностью отключить обработку файлов cookie по умолчанию, чтобы она не затрагивала общее хранилище. Вы можете использовать -[NSMutableURLRequest setHTTPShouldHandleCookies:NO], чтобы отключить поведение по умолчанию, затем считывать заголовки файлов cookie из ответов, сохранять их самостоятельно и вставлять их обратно в последующие URL-запросы.

...