问题描述
公司接入第三方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)
}