公司要對接一個第三方平臺,然後就有了一個可奇葩的邏輯,用戶填寫完相關信息後,點擊提交,然後服務器返回一個網頁的源代碼……需要用WebView加載這個網頁。
實現的時候發現,我自己寫的簡單的網頁源碼可以加載,但是服務器返回的就是無法加載。後來把源碼保存成文件以後,用瀏覽器打開發現,該網頁鏈接的站點是一個不受信任的站點,應該是因爲服務器證書無效而不受信任。
self.wkWeb.navigationDelegate = self // 實現以下代理方法 func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) { let cred = URLCredential.init(trust: challenge.protectionSpace.serverTrust!) completionHandler(.useCredential, cred) }
有朋友說還需要在 plist
文件中設置:
將Allow Arbitrary Loads in Web Content
置爲 YES
,或者將Allow Arbitrary Loads
置位YES
。
但是我實際測試以後發現,不設置也可以打開,可能是具體情況不同的原因吧!