項目中WKWebvie加載https連接加載網頁,所以要適配https,web
事先聲明呀,這裏會有兩種狀況:服務器
一種大廠的ssl證書,好比蘋果,百度等等,覺得是大廠,因此加載apple,默認就是信任的,爲啥,哈哈,由於,規矩都是被大廠規定的。網絡
第二中,就是人們所所的私人證書,這裏,咱們就要寫代碼選擇信任咱們要訪問的網絡的證書了,不然,就訪問不了。app
咱們看到,這是一個可選的代理方法,所以要遵照代理方法,navigationDelegate = self代理
一看,盡是英文,一頭霧水,而後費勁心思,琢磨了一番,code
描述:當webview須要響應身份驗證的挑戰,會調用此方法orm
challenge:身份驗證的挑戰server
completionHandler : 這是一個block,第一個參數是一個NSURLSessionAuthChallengeDisposition類型的枚舉,當disposition是NSURLSessionAuthChallengeUseCredential,則參數是爲了驗證證書用得,若是爲nil,表明持續沒有驗證。若是沒有聲明此方法,則webviw響應份驗證的挑戰,disposition爲NSURLSessionAuthChallengeRejectProtectionSpace。對象
/* NSURLSessionAuthChallengeUseCredential = 0, 使用證書 NSURLSessionAuthChallengePerformDefaultHandling = 1, 忽略證書(默認的處理方式) NSURLSessionAuthChallengeCancelAuthenticationChallenge = 2, 忽略書證, 並取消此次請求 NSURLSessionAuthChallengeRejectProtectionSpace = 3, 拒絕當前這一次, 下一次再詢問 */
大體弄明白了之後,就好辦了,ssl
// 判斷是不是信任服務器證書 if (challenge.protectionSpace.authenticationMethod != NSURLAuthenticationMethodServerTrust) { return; } // 告訴服務器,客戶端信任證書 // 建立憑證對象 NSURLCredential *credential = [[NSURLCredential alloc] initWithTrust:challenge.protectionSpace.serverTrust]; // 告訴服務器信任證書 !completionHandler ? : completionHandler(NSURLSessionAuthChallengeUseCredential, credential);