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

Rest 无法再通过iOS10的AFNetworking/NSURLConnection进行身份验证?,rest,nsurlconnection,afnetworking-2,afnetworking-3,Rest,Nsurlconnection,Afnetworking 2,Afnetworking 3,我的应用程序使用AFNetworking 2.x从我们其中一台服务器上的数据库获取数据。直到上周左右,一切都很顺利。现在我们至少一个连接无法正常工作。这是代码 NSString *loginURL = @"https://<server>/<path>/<url>"; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

我的应用程序使用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];
} 
NSString*loginURL=
@"https:////";
AFHTTPRequestOperationManager*管理器=
[AFHTTPRequestOperationManager];
manager.requestSerializer=[AFJSONRequestSerializer序列化程序];
[manager.requestSerializer]
setAuthorizationHeaderFieldWithUsername:pUserEmail
密码:pUserPassword];
manager.responseSerializer=[AFJSONResponseSerializer序列化程序];
AFHTTPRequestOperation*操作=[管理器获取:loginURL
参数:[self jsonDict]
成功:^(AFHTTPRequestOperation*操作,id响应对象){
if(完成块){
完成区块(是);
}
}
失败:^(AFHTTPRequestOperation*操作,NSError*错误){
if(完成块){
完井区块(编号);
}
}];
[操作启动];
} 
对我来说,真正奇怪的是,如果我在浏览器中访问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
9月20日10:54:54 iPhone Scrolar(CFNetwork)[1999]:N-9801
(kCFStreamErrorDomainSSL,-9801)
9月20日10:54:54 iPhone Scrolar(CFNetwork)[1999]:HTTP加载失败(错误代码:-1200[3:-9801])
9月20日10:54:54 iPhone Scoular(CFNetwork)[1999]:NSURL连接完成,错误代码为-1200
我猜某些东西(iOS8或iOS9中的NSURLConnection)已被弃用,在iOS10中,它不再被允许,如果我更新到AFNetworking 3.x,它将修复此问题,但我不能完全确定

具有iOS9的用户能够进行身份验证


我不相信服务器有任何变化

在iOS 10中,由于安全性差,某些密码套件被禁用,仅允许在web视图中使用。您可能无法使用Info.plist文件中的Apple Transport Security overrides覆盖该信息


无论哪种方式,即使覆盖有效,您也必须在2016年底之前升级服务器,因此不要花费太长时间试图实现这一点。

对于ios10 NSAppTransportSecurity,NSAllowsArbirryLoads必须为true。它在你的项目中有规定吗?没有。这在我的plist中有规定吗?但是为什么它会在模拟器中工作呢?嗯。。在info.plist中必须将其设置为true。我们能试着消除一种可能的根本原因吗?是的,让我试试。我看到其他人也有同样的问题(通过谷歌)。谢谢你,我会尽快回复你。我能够让应用程序与ATS覆盖一起工作。我过去经常查看有问题的服务器,并确定需要进行哪些修复。与管理员一起完成这项工作。谢谢你的澄清。