2012-09-12 43 views
7

Estoy desarrollando una aplicación de iOS que realiza solicitudes frecuentes a un servidor web, y estoy usando AFNetworking (que me gusta mucho). Sin embargo, estoy teniendo un problema con la autorización que simplemente no puedo resolver.Encabezado de autorización no enviado usando AFNetworking

El servidor requiere que proporcione un encabezado de autorización para obtener la respuesta que deseo. En concreto, los encabezados de autorización debe ser así:

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

estoy usando AFNetworking lo largo del proyecto, y todo funciona bien, excepto para este problema autorización. Estoy usando el siguiente código:

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

donde myClient apunta a un objeto AFHTTPClient. Por extraño que parezca, cuando registro la solicitud en XCode usando AFHTTPRequestOperationLogger, el registrador afirma que tengo los encabezados correctos establecidos. Sin embargo, el encabezado de autorización no parece llegar al servidor; no puedo verlo en el registro del servidor.

Para aislar el problema, he tratado de hacer la misma solicitud exacta con el bueno de NSURLRequest, así como curl y el requests biblioteca en Python - todos ellos funcionan bien, es decir, la cabecera de autorización se envía & recibido (es decir, puedo verlo en el registro del servidor), y la respuesta del servidor es lo que debería ser.

Si alguien ha tenido el mismo problema (y ha encontrado una solución), le agradecería saber de usted.

Gracias.

+0

El servicio afectado es una aplicación Django en Heroku. – Khandelwal

+0

Me encontré con el mismo problema hoy. Muy raro. –

+0

cualquier solución a esto !? – bpn

Respuesta

0

Si construye su operación manualmente, entonces los Headers predeterminados no se aplican, esa podría ser la causa de su problema.

2

A veces (especialmente con Django) esto es causado por el desvío de redirección de los parámetros del encabezado. Por ejemplo,/Object redirige a/Object/en segundo plano y elimina el parámetro auth necesario durante el cambio.

Si está usando AFNetworkActivityLogger con el nivel AFLoggerLevelDebug, entonces debería poder verificarlo en la consola. Si ve una solicitud POST con/Object y la respuesta con/Object/then, esto podría indicar que se está produciendo un redirection stripping.

+0

Esta respuesta es la respuesta correcta. Referencia: https://github.com/AFNetworking/AFNetworking/issues/2116 – TharakaNirmana

Cuestiones relacionadas