【发布时间】:2019-03-09 06:59:41
【问题描述】:
我已更新 API 以强制使用 SSL。现在,我的 swift/ios 应用程序因任何包含 Authorization 标头的调用而失败。只有登录和不安全的 api 调用作为测试有效。
如果我禁用 SSL,一切都会恢复正常。
我还验证了服务器与 fiddler 一起正常工作。
我觉得我遗漏了一些简单的东西,但我对答案的搜索目前是徒劳的。
我应该在 HTTPURLResponse 中添加 data 为 nil,response 为 nil 并且错误包含以下内容:
可选(错误域=NSPOSIXErrorDomain 代码=100“协议错误” UserInfo={NSErrorPeerAddressKey={长度=16,容量=16,字节= 0x100201bb36fc951f0000000000000000},_kCFStreamErrorCodeKey=100, _kCFStreamErrorDomainKey=1})
【问题讨论】:
-
如果使用 URLSession 进行 API 调用,您可能需要实现正确的委托方法,特别是 func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition , URLCredential?) -> 无效)。请注意,这个特定的委托与 URLSessionTaskDelegate 有一个不同的变体。
-
好的,我实现了 urlsessiondelegate,它确实命中了 didReceive 回调。我选择执行默认处理,这就是我认为默认情况下它所做的事情,我仍然得到相同的结果
-
现在很明显它是一个 NSPOSIXErrorDomain,它可能是不同的问题。查看此链接。这几乎没有可能的解决方案。 stackoverflow.com/questions/41461481/…
-
是的,我之前确实抓住了那个线程。我正在做一个简单的获取请求,所以没有正文。我尝试了一些不同的内容类型作为测试,但结果都一样:(