WKWebView выдает HTTP-ОШИБКУ 401 — сбой авторизации в Cocoa (Mac-приложение) в swift

#swift #cocoa #cocoa-touch #wkwebview #http-status-code-401

#swift #cocoa #cocoa-touch #wkwebview #http-status-code-401

Вопрос:

Я открываю веб-приложение в приложении Mac, чтобы открыть веб-приложение, я использую метод WebView.load для отображения содержимого в WebView. Большую часть времени удается загрузить содержимое, но иногда возникает ошибка сбоя авторизации. Это временная проблема.

 func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse,
                 decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {

        if let response = navigationResponse.response as? HTTPURLResponse {
            print("Response: (response)")
            
            if response.statusCode == 401 {
  

Веб-приложение с использованием AppleConnect SingleSignOn.

 func webView(_ webView: WKWebView, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
        if let serverTrust = challenge.protectionSpace.serverTrust {
            completionHandler(URLSession.AuthChallengeDisposition.performDefaultHandling, URLCredential(trust: serverTrust))
            //completionHandler(URLSession.AuthChallengeDisposition.performDefaultHandling, nil)
            
        }
    }
  

Эта ошибка возникает только в ОС Big Sur, а не в Catalina, и это периодическая проблема, а не непрерывная. Кто-нибудь сталкивался с этой проблемой раньше?

введите описание изображения здесь

Ответ №1:

Чтобы устранить ошибку сбоя авторизации, я добавил непостоянный код

 let webViewConfig = WKWebViewConfiguration()
webView = WKWebView(frame: view.frame, configuration: webViewConfig)
  

/** @abstract возвращает новое непостоянное хранилище данных.
@обсуждение Если WKWebView связан с непостоянным хранилищем данных, данные не
будут записаны в файловую систему. Это полезно для реализации «частного просмотра» в веб-представлении.
*/