我正在开发一个iOS应用程序,它经常向Web服务器发出请求,而我正在使用AFNetworking(我非常喜欢)。但是,我遇到了一个我无法解决的授权问题。
服务器要求我提供授权标头以获得我想要的响应。具体来说,授权标题应如下所示:
Authorization = "ApiKey some-user-name:someNumericalApiKey"
我在整个项目中使用AFNetworking,除了这个授权问题外,一切正常。我正在使用以下代码:
[myClient setDefaultHeader:@"Authorization" value:@"ApiKey some-user-name:someNumericalApiKey"];
其中myClient
指向AFHTTPClient对象。很奇怪,当我使用AFHTTPRequestOperationLogger
在XCode中记录请求时,记录器声称我设置了正确的标头。但是,授权标头似乎没有到达服务器 - 我无法在服务器日志中看到它。
为了隔离问题,我尝试使用旧的NSURLRequest
以及curl
和Python中的requests
库来完成相同的请求 - 所有这些工作正常,即授权标题发送&收到(即我可以在服务器日志中看到它),服务器响应应该是它应该是什么。
如果有人遇到同样的问题(并找到了解决方案),我将非常感谢您的回复。
感谢。
答案 0 :(得分:2)
有时(尤其是使用Django)这是由头参数的重定向剥离引起的。例如,/ Object在后台重定向到/ Object /并在切换期间删除必要的auth参数。
如果您正在使用级别为AFLoggerLevelDebug
的{{3}},那么您应该可以在控制台中查看此内容。如果您看到带有/ Object的POST请求和带有/ Object /的响应,那么这可能表示正在进行重定向剥离。
答案 1 :(得分:0)
如果您手动构建操作,则不会应用defaultHeaders,这可能是导致问题的原因。