#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 связан с непостоянным хранилищем данных, данные не
будут записаны в файловую систему. Это полезно для реализации «частного просмотра» в веб-представлении.
*/