WKWebView无法使用ERR_CERT_COMMON_NAME_INVALID加载页面

时间:2018-10-22 08:35:32

标签: ios macos ssl-certificate wkwebview

我正在使用var user = { primaryEmail: preferredEmail, name: { givenName: firstName, familyName: lastName, fullName: firstName + ' ' + lastName, }, relations: { value: reportingManager, type: 'Manager', }, organizations: { title: designation, primary: true, department: dept, description: employmentType, costCenter: location, }, password: password, changePasswordAtNextLogin: 'true', }; user = AdminDirectory.Users.insert(user); Logger.log('User %s created with ID %s.', user.primaryEmail, user.id); 在存在自签名证书的测试环境中加载网页。

WKWebView似乎无法加载该网页,因为证书存在以下问题:

  

ERR_CERT_COMMON_NAME_INVALID

使用Safari,iOS和macOS,如果我打开页面,都会收到以下消息:

enter image description here

如果我决定继续,则可以正确加载页面。相反,对于WKWebView,没有API允许绕过这种检查。

我尝试通过使用以下代码段信任所有证书,但是什么也没有发生:

WKWebView

在我的func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) { if let serverTrust = challenge.protectionSpace.serverTrust { completionHandler(.useCredential, URLCredential(trust: serverTrust)) } else { completionHandler(.cancelAuthenticationChallenge, nil) } } 文件中,我已经将Info.plist设置为NSAllowsArbitraryLoadsInWebContent,并与YES设置为具有向后兼容性。

有什么主意吗?

1 个答案:

答案 0 :(得分:0)

我找到了问题。

以前,我是使用这种技术注入第三方Cookie来加载网页的。

How to set WKWebView cookie accept policy?

在iOS 12中,由于https://bugs.webkit.org/show_bug.cgi?id=188691,此功能不再可用。

我正在四处寻找解决方案...