WKWebView加載https網(wǎng)頁(yè)時(shí)顯示白屏

今天使用WKWebView遇到了一些問(wèn)題,由于自己也是第一次使用這個(gè)控件,所以用來(lái)做個(gè)記錄


加載URL:https://www.so.com顯示正常,而加載https://m.500.com/info/article/detail-231721.shtml出現(xiàn)白屏

查看WKWebView的代理時(shí),發(fā)現(xiàn)WKNavigationDelegate代理中有兩個(gè)返回錯(cuò)誤信息的代理,所以加入到代碼中調(diào)試

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error{

????NSLog(@"加載失敗%@", error.userInfo);

}

- (void)webView:(WKWebView *)webView didFailNavigation:(WKNavigation *)navigation withError:(NSError *)error{

????NSLog(@"加載失敗%@", error.userInfo);

}

果真在didFailProvisionalNavigation返回了錯(cuò)誤信息

NSErrorFailingURLKey = "https://m.500.com/info/article/detail-231721.shtml";

NSErrorFailingURLStringKey = "https://m.500.com/info/article/detail-231721.shtml";

NSLocalizedDescription = "An SSL error has occurred and a secure connection to the server cannot be made.";

NSLocalizedRecoverySuggestion = "Would you like to connect to the server anyway?";

NSUnderlyingError = "Error Domain=kCFErrorDomainCFNetwork Code=-1200 \"(null)\" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, _kCFNetworkCFStreamSSLErrorOriginalValue=-9858, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9858}";

"_NSURLErrorFailingURLSessionTaskErrorKey" = "LocalDataTask <2EF41F2F-E2B7-4179-A668-AA19CA4CE8C5>.<1>";

"_WKRecoveryAttempterErrorKey" = "<WKReloadFrameErrorRecoveryAttempter: 0x2805549a0>";

"_kCFStreamErrorCodeKey" = "-9858";

"_kCFStreamErrorDomainKey" = 3;

networkTaskDescription = "LocalDataTask <2EF41F2F-E2B7-4179-A668-AA19CA4CE8C5>.<1>";

WKWebview 拋出了SSL錯(cuò)誤,無(wú)法與服務(wù)器建立安全鏈接

解決方法如下:

1.在info.plist中加入如下代碼

<key>NSAppTransportSecurity</key>

<dict>?

? ???????<key>NSAllowsArbitraryLoads</key>

? ???????<true/>

?</dict>?

2.實(shí)現(xiàn)代理方法

- (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {

? ? if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {

? ? ? ? if([challengepreviousFailureCount] ==0) {

? ? ? ? ? ? NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];

? ? ? ? ? ? completionHandler(NSURLSessionAuthChallengeUseCredential, credential);

? ? ? ? }else{

? ? ? ? ? ? completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);

? ? ? ? }

? ? }else{

? ? ? ? completionHandler(NSURLSessionAuthChallengeCancelAuthenticationChallenge, nil);

? ? }

}


重新運(yùn)行后頁(yè)面可以正確渲染了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容