无法再通过 AFNetworking/NSURLConnection 和 iOS10 进行身份验证?

Can no longer authenticate with AFNetworking/NSURLConnection with iOS10?

我的应用程序使用 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 并按 username/password 输入,我可以访问。

如果我在模拟器中使用 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 的用户能够进行身份验证。

我认为服务器没有任何变化。

在iOS10中,一些密码套件因为安全性较弱而被禁用,只允许在web视图中使用。您可能无法使用 Info.plist 文件中的 Apple Transport Security 覆盖来覆盖它。

无论哪种方式,即使覆盖有效,您也必须在 2016 年底前升级服务器,因此不要花太长时间尝试使其正常工作。