【发布时间】:2017-03-07 14:49:16
【问题描述】:
我正在开发一个使用混合原生视图控制器和UIWebView 的应用程序。应用程序登录由 API 处理,我有一个实用函数可以将身份验证令牌保存到 HTTPCookieStorage 中的 cookie 以及持久用户模型中。
现在我想更新到 WKWebView,但它不会像 UIWebView 那样自动从 HTTPCookieStorage 加载 cookie。
我找到了一种方法来保存来自答案 here 的响应 cookie,并且我可以修改答案以将身份验证令牌也存储到我的用户模型中,但我不确定如何将 cookie 用于新请求.我只需要将 cookie 添加到初始加载中,因为我将禁用 Web 视图中的导航。
有没有办法可以将 cookie 值添加到标头或其他解决方案?
这是我将用来从响应中获取 cookie 的代码。
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
if let urlResponse = navigationResponse.response as? HTTPURLResponse,
let url = urlResponse.url,
let allHeaderFields = urlResponse.allHeaderFields as? [String : String] {
let cookies = HTTPCookie.cookies(withResponseHeaderFields: allHeaderFields, for: url)
HTTPCookieStorage.shared.setCookies(cookies , for: urlResponse.url!, mainDocumentURL: nil)
decisionHandler(.allow)
}
}
【问题讨论】: