ios – 在WKWebView中允许未经验证的ssl证书

我正在尝试在iOS 8的WKWebView中加载具有自签名证书的HTTPS网址,并保持失败. UIWebView使用的解决方法(使用NSUrlRequest中的setAllowsAnyHTTPSCertificate)似乎不起作用.有没有人知道任何解决方法

我不需要一个适用于AppStore的解决方案,因为我只需要在开发阶段访问自签名的证书站点,而不是在生产环境中使用,但是开发和测试服务器实例确实是一个问题.

先谢谢你.

解决方法

这是在iOS 9中修复的! WKWebView终于在WKNavigationDelegate上调用了webView(_:didReceiveAuthenticationChallenge:completionHandler :).不幸的是,如果您在iOS 8设备上运行 Xcode 7内置的代码(至少不在我的初始测试中),则无法运行.

在下面的例子中,我并没有对证书做任何事情,只是让它通过,而不进行任何进一步的验证(显然是生产代码的坏计划).有关他们希望在这里做什么的更多细节,请参见Apple’s docs(清单3).

迅速:

func webView(webView: WKWebView,didReceiveAuthenticationChallenge challenge: NSURLAuthenticationChallenge,completionHandler: (NSURLSessionAuthChallengedisposition,NSURLCredential?) -> Void) {
        let cred = NSURLCredential.init(forTrust: challenge.protectionSpace.serverTrust!)
        completionHandler(.UseCredential,cred)
}

Swift 3:

let cred = URLCredential(trust: challenge.protectionSpace.serverTrust!)
completionHandler(.useCredential,cred)

Objective-C的

NSURLCredential * credential = [[NSURLCredential alloc] initWithTrust:[challenge protectionSpace].serverTrust];
completionHandler(NSURLSessionAuthChallengeUseCredential,credential);

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...