7

我正在开发一个向 Web 服务器发出频繁请求的 iOS 应用程序,并且我正在使用 AFNetworking(我非常喜欢)。但是,我遇到了无法解决的授权问题。

服务器要求我提供授权标头以获得我想要的响应。具体来说,授权标头应该是这样的:

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

我在整个项目中都使用 AFNetworking,一切正常,除了这个授权问题。我正在使用以下代码:

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

wheremyClient指向一个 AFHTTPClient 对象。奇怪的是,当我使用 XCode 记录请求时AFHTTPRequestOperationLogger,记录器声称我设置了正确的标头。但是,授权标头似乎没有到达服务器 - 我在服务器日志中看不到它。

为了隔离问题,我尝试使用 good old NSURLRequest,以及curlrequestsPython 中的库发出完全相同的请求 - 所有这些工作正常,即发送和接收授权标头(即我可以在服务器日志),服务器响应就是它应该是的。

如果有人遇到同样的问题(并找到了解决方案),我将非常感谢您的来信。

谢谢。

4

2 回答 2

2

有时(尤其是使用 Django)这是由重定向剥离标头参数引起的。例如,/Object 在后台重定向到 /Object/,并在切换期间删除必要的 auth 参数。

如果您使用的是AFNetworkActivityLogger级别,AFLoggerLevelDebug那么您应该能够在控制台中查看这一点。如果您看到带有 /Object 的 POST 请求和带有 /Object/ 的响应,那么这可能表明正在进行重定向剥离。

于 2015-09-07T19:17:19.993 回答
0

如果您手动构建操作,则不会应用 defaultHeaders,这可能是您的问题的原因。

于 2012-10-09T04:33:18.280 回答