iOS10 无法再通过 AFNetworking/NSURLConnection 进行身份验证?
Posted
技术标签:
【中文标题】iOS10 无法再通过 AFNetworking/NSURLConnection 进行身份验证?【英文标题】:Can no longer authenticate with AFNetworking/NSURLConnection with iOS10? 【发布时间】:2016-09-20 17:12:12 【问题描述】:我的应用使用 AFNetworking 2.x 从我们其中一台服务器上的数据库中获取数据。直到上周左右,一切都运行良好。现在,我们至少无法让我们的一个连接正常工作。这是代码。
NSString *loginURL =
@"https://<server>/<path>/<url>";
AFHTTPRequestOperationManager *manager =
[AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer
setAuthorizationHeaderFieldWithUsername:pUserEmail
password:pUserPassword];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
AFHTTPRequestOperation *operation = [manager GET:loginURL
parameters:[self jsonDict]
success:^(AFHTTPRequestOperation *operation, id responseObject)
if (completionBlock)
completionBlock(YES);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
if (completionBlock)
completionBlock(NO);
];
[operation start];
对我来说真正奇怪的是,如果我在浏览器中访问 URL 并输入用户名/密码,我就可以访问。
如果我使用 Xcode 7.3.1 并在模拟器中运行,那么我可以访问。
如果我在我的 iPhone 上运行它会失败,并且我会收到以下 3 条错误消息。
Sep 20 10:54:54 iPhone Scoular(CFNetwork)[1999] <Notice>: N -9801
(kCFStreamErrorDomainSSL, -9801)
Sep 20 10:54:54 iPhone Scoular(CFNetwork)[1999] <Error>: HTTP load failed (error code: -1200 [3:-9801])
Sep 20 10:54:54 iPhone Scoular(CFNetwork)[1999] <Error>: NSURLConnection finished with error - code -1200
我的猜测是某些东西(ios8 或 iOS9 中的 NSURLConnection)已被弃用,在 iOS10 中不再允许,如果我更新到 AFNetworking 3.x 它将解决这个问题,但我不完全确定。
使用 iOS9 的用户能够进行身份验证。
我认为服务器没有任何变化。
【问题讨论】:
with ios10在 iOS 10 中,由于安全性较弱,某些密码套件被禁用,仅允许在 Web 视图中使用。您可能会也可能无法使用 Info.plist 文件中的 Apple Transport Security 覆盖来覆盖它。
无论哪种方式,即使覆盖有效,您也必须在 2016 年底之前升级服务器,因此不要花费太长时间来尝试使其正常工作。
【讨论】:
我能够让应用程序与 ATS 覆盖一起工作。我使用ssllabs.com/ssltest/index.html 查看有问题的服务器并确定我们需要进行哪些修复。与管理员合作完成这项工作。感谢您的澄清。以上是关于iOS10 无法再通过 AFNetworking/NSURLConnection 进行身份验证?的主要内容,如果未能解决你的问题,请参考以下文章