Заголовок авторизации не отправляется с помощью AFNetworking

Я разрабатываю приложение для iOS, которое делает частые запросы к веб-серверу, и я использую AFNetworking (что мне очень нравится). Однако у меня возникла проблема с авторизацией, которую я просто не могу решить.

Сервер требует, чтобы я предоставил заголовок авторизации, чтобы получить ответ, который я хочу. В частности, заголовки авторизации должны быть такими:

Authorization = "ApiKey some-user-name:someNumericalApiKey"

Я использую AFNetworking во всем проекте, и все работает нормально, за исключением этой проблемы с авторизацией. Я использую следующий код:

[myClient setDefaultHeader:@"Authorization" value:@"ApiKey some-user-name:someNumericalApiKey"];

где myClient указывает на объект AFHTTPClient. Как ни странно, когда я регистрирую запрос в XCode, используя AFHTTPRequestOperationLogger, регистратор утверждает, что у меня установлены правильные заголовки. Однако заголовок авторизации, похоже, не доходит до сервера - я не вижу его в журнале сервера.

Чтобы изолировать проблему, я попытался сделать точно такой же запрос, используя старый добрый NSURLRequest, а также curl и библиотеку requests в Python - все они работают нормально, т.е. заголовок авторизации отправляется и принимается (т.е. я могу см. в журнале сервера), и ответ сервера такой, каким он должен быть.

Если кто-то сталкивался с такой же проблемой (и нашел решение), буду очень признателен за весточку.

Спасибо.


person marcel salathe    schedule 12.09.2012    source источник
comment
Ударная служба — это приложение Django на Heroku.   -  person Khandelwal    schedule 12.09.2012
comment
Сегодня я столкнулся с той же проблемой. Очень странно.   -  person Martin Wawrusch    schedule 09.10.2012
comment
любое решение этого!?   -  person bpn    schedule 10.04.2014


Ответы (2)


Иногда (особенно с Django) это вызвано удалением перенаправления параметров заголовка. Например, /Object перенаправляет на /Object/ в фоновом режиме и удаляет необходимый параметр авторизации во время переключения.

Если вы используете AFNetworkActivityLogger с уровнем AFLoggerLevelDebug, вы сможете проверить это в консоли. Если вы видите запрос POST с /Object и ответ с /Object/, это может указывать на то, что происходит удаление перенаправления.

person PF1    schedule 07.09.2015
comment
Этот ответ является правильным ответом. Ссылка: github.com/AFNetworking/AFNetworking/issues/2116 - person TharakaNirmana; 04.03.2016

Если вы создаете свою операцию вручную, то заголовки по умолчанию не применяются, это может быть причиной вашей проблемы.

person Martin Wawrusch    schedule 09.10.2012