我正在创建使用在 HTTPS 上托管的其他API的iOS应用。对于 SSL 和 TLS ,此域具有有效CA批准的证书。但是当我从我的应用程序发出NSURL请求时它第一次工作正常,但是半小时后我将发出NSURL请求它返回 NSURL错误-1012 。
我还尝试使用下面提到的方法处理身份验证挑战和 TLS链验证: - (BOOL)连接:(NSURLConnection *)连接canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace - (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
当我调试 canAuthenticateAgainstProtectionSpace 并检查 protectionspace 值时,它显示请求 NSURLAuthenticationMethodServerTrust 问题。
我尝试了不同的场景来处理这个问题。 1.在 canAuthenticateAgainstProtectionSpace 方法中,如果我发现 NSURLAuthenticationMethodServerTrust 验证,则返回NO,然后 didReceiveAuthenticationChallenge 方法从未调用,但API返回空字符串。 2.在 canAuthenticateAgainstProtectionSpace 方法中,如果我找到 NSURLAuthenticationMethodServerTrust 验证,则返回YES,然后调用 didReceiveAuthenticationChallenge 方法,当我使用 continueWithoutCredentialForAuthenticationChallenge时,执行默认处理验证攻击和取消验证挑战方法一个接一个但没有发生任何事情总是我得到相同的结果空白字符串和 cancelAuthenticationChallenge 我得到 NSURL错误-1012
我们的API托管在 http://uat-exchange.vrmco.com/
上请帮助我解决我错过的问题,或者是我们需要用来解决此错误的任何内容。
先谢谢。
答案 0 :(得分:0)
如果它第一次运行,我认为这不是TLS问题。 IIRC,除非您提供自定义TLS处理程序方法(在canAuthenticateAgainst ...方法中为服务器信任保护空间返回YES),否则1012错误通常意味着无法验证用户到< em>服务器而不是相反。 (TLS故障还有其他错误代码 - 特别是1202。)
我的第一个猜测是您的服务器需要某种基于cookie的身份验证,并在该Cookie过期时返回HTTP 401错误代码。如果是这样,您应该将其视为您需要重做登录过程的指示。