Swift中WKWebView的Cookie启用与集成问题排查
我尝试了多种启用Cookie的方法,但均无效。Safari浏览器可正常工作,但WKWebView无法正常启用Cookie。
尝试的方法1代码
let config = WKWebViewConfiguration() let preferences = WKPreferences() preferences.javaScriptCanOpenWindowsAutomatically = false config.preferences = preferences let cookieStore = WKWebsiteDataStore.nonPersistent() config.websiteDataStore = cookieStore webView = WKWebView(frame: view.bounds, configuration: config) webView.navigationDelegate = self if let url = URL(string: "https://emerald-lyssa-85.tiiny.site/") { // Create a URLRequest with the URL let request = URLRequest(url: url) // Load cookies from the request if let cookies = HTTPCookieStorage.shared.cookies(for: url) { for cookie in cookies { webView.configuration.websiteDataStore.httpCookieStore.setCookie(cookie, completionHandler: nil) } // Load the URLRequest in the webView webView.load(request) } } view.addSubview(webView)
对应的代理方法代码
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) { guard let response = navigationResponse.response as? HTTPURLResponse, let url = navigationResponse.response.url else { decisionHandler(.cancel) return } if let headerFields = response.allHeaderFields as? [String: String] { let cookies = HTTPCookie.cookies(withResponseHeaderFields: headerFields, for: url) cookies.forEach { cookie in webView.configuration.websiteDataStore.httpCookieStore.setCookie(cookie) } } decisionHandler(.allow) }
这些方法均未生效。
内容的提问来源于stack exchange,提问作者DJX
相关产品推荐
相关产品推荐

