Доступ к сеансовым cookie-файлам с помощью NSHTTPCookieStorage - PullRequest
3 голосов
/ 16 июля 2010

Я получаю доступ к защищенной информации сервера, и он отправляет кучу файлов cookie в приложение по запросу.Проблема в том, что некоторые файлы cookie являются только сеансами, и когда я использую:

[NSHTTPCookie requestHeaderFieldsWithCookies:[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:theCookie]]

, он не возвращает сеансовые файлы с именем JSESSIONID и вызывает проблемы.Если я NSLog полный NSHTTPCookieStorage он отображает сессионные, так что они там, я просто не могу найти способ извлечь их из хранилища.Кроме того, я просмотрел список файлов cookie, и файлы cookie сеанса там не хранятся, но я предполагаю, что это только потому, что они основаны на сеансе.

Любая помощь приветствуется.

Изменить: Это фрагмент того, что я получаю, когда спрашиваю обо всех файлах cookie:

<NSHTTPCookie version:0 name:@\"TheNameOfTheCookie\" value:@\"A variable number\" expiresDate:@\"(null)\" created:@\"301196844.000000\" sessionOnly:TRUE domain:@\"THE URL\" path:@\"/\" secure:FALSE comment:@\"(null)\" commentURL:@\"(null)\" portList:[]>

<NSHTTPCookie version:0 name:@\"JSESSIONID\" value:@\"A variable number\" expiresDate:@\"(null)\" created:@\"301196866.000000\" sessionOnly:TRUE domain:@\"The Same URL as above\" path:@\"/path\" secure:FALSE comment:@\"(null)\" commentURL:@\"(null)\" portList:[]>

Теперь, когда я запрашиваю файлы cookie на основе URL-адреса в указанных выше файлах cookie, возвращается первый файл, второй.не.

* обратите внимание, извините за необходимость удаления определенных элементов, они соответствуют ожиданиям и не имеют отношения к вопросу

Ответы [ 3 ]

2 голосов
/ 06 июля 2012

У меня была эта проблема, причина в том, что NSHTTPCookieDomain.куки-файлы должны иметь один и тот же домен

.... domain:@\"THE URL\" path:@\"/\" ....
.... domain:@\"The Same URL as above\" path:@\"/path\" ....

должен быть

.... domain:@\"NAME-DOMAIN" path:@"/" ....

, я просто изменяю его, помещаю тот же домен и путь и работаю

Мой JSESSIONID:

<NSHTTPCookie version:0 name:"JSESSIONID" value:"7C9B0...........EB5" expiresDate:(null) created:2012-07-06 16:14:26 +0000 (3.63284e+08) sessionOnly:TRUE domain:"FOO" path:"/" isSecure:FALSE>
0 голосов
/ 16 апреля 2012

Какой фактический URL вы передаете -cookiesForURL:? Если URL-адрес не имеет пути, совпадающего с указанным в записи cookie JSESSIONID (например, http://example.com/path), метод -cookiesForURL: не вернет его.

0 голосов
/ 17 июля 2010

Пожалуйста, разбейте вашу проблему на части, сначала проверьте, если

[[NSHTTPCookieStorage sharedHTTPCookieStorage]
    cookiesForURL:[NSURL URLWithString:theCookie]]

возвращает то, что, по вашему мнению, должно возвращаться. Если нет, присмотритесь к значению theCookie.

...