WKWebView处理cookie问题

问题描述

公司接入第三方H5接入,页面上需要输入用户名和密码,使用WKWebView总是记不住密码(应该是有时能记住,有时记不住,他们的后台将用户名保存在了cookie中,android的处理是拿到cookie,手动flush一下,不然有时不会及时保存在本地。但是iOS拿不到这个cookie,也没有所谓的flush方法)

解决方法

1、服务端将cookie放在responde的header中
2、客户端拿到header中的cookie,保存在HTTPCookieStorage中,也可以说是替换

func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
        if let response = navigationResponse.response as? HTTPURLResponse, let headerField = response.allHeaderFields as? [String: String], let url = response.url {
            let cookie = HTTPCookie.cookies(withResponseHeaderFields: headerField, for: url)
            HTTPCookieStorage.shared.setCookies(cookie, for: response.url, mainDocumentURL: response.url)
            
        }
        decisionHandler(.allow)
    }

你可能感兴趣的:(WKWebView处理cookie问题)