Краткое изложение проблемы: я использую MKNetworkKit
и использую Basic Auth для аутентификации на сервере REST. Я не эксперт по настройке деталей на стороне сервера. Все, что я знаю, это то, что потребуется базовая аутентификация без SSL.
Если я аутентифицирую себя с действительным пользователем/паролем, и если я сделаю это во второй раз с каким-то фиктивным вводом, это все равно будет успешным. Я прочитал документацию и попытался сделать это:
[op setCredentialPersistence:NSURLCredentialPersistenceNone];
это не работает. Но если я сделаю это:
[op setCredentialPersistence:NSURLCredentialPersistenceNone];
[op addHeader:@"Cookie" withValue:@""]; // a hunch I tried
потом вроде заработало. Как будто какой-то cookie всегда передается, и сервер принимает его, даже не проверяя заголовок авторизации. Я сделал несколько тестов, в которых я предоставлю вещи в следующем порядке (хорошо, подделка, хорошо) и (подделка, хорошо, подделка), и, похоже, все работает так, как ожидалось.
Теперь, может ли кто-нибудь указать, что если это не так, то где-то должна быть ошибка, либо MKNetworkKit
, либо на стороне сервера? Если я установлю NSURLCredentialPersistenceNone
, то почему добавление этого заголовка Cookie заставит его работать?? он, должно быть, перезаписал то, что должен был отправить, и вызвал неправильное поведение, и, таким образом, «исправил» его.
[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]
перед запросом и после получения ответа. - person Moxy   schedule 21.12.2013