【发布时间】:2017-01-23 21:27:05
【问题描述】:
我们正在将 cookie 从 WKWebView 复制到 HTTPCookitStorage.shared 以供 URLSession 任务使用。
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
if let response = navigationResponse.response as? HTTPURLResponse {
var headers = [String : String]()
for (header, value) in response.allHeaderFields {
headers[(header as? String)!] = value as? String
}
let cookies = HTTPCookie.cookies(withResponseHeaderFields: headers, for: response.url!)
for cookie: HTTPCookie in cookies {
print(cookie)
HTTPCookieStorage.shared.setCookie(cookie)
}
}
decisionHandler(.allow)
}
这会捕获大多数 cookie,但如果 WKWebView 中发生 302 重定向则不会。是否可以使用委托方法或其他技术从具有 302 响应代码的响应中捕获 cookie?
【问题讨论】:
-
您找到解决此问题的方法了吗?我也有同样的问题
-
没有。我们使用 UIWebView 进行登录,捕获了 cookie。使用 WKUserScript 将 cookie 复制到 WKWebView。
-
据我所见,没有 WKNavigationDelegate 方法允许访问响应标头等。希望 iOS 11 能够解决其中的一些限制。
-
ps。问题确实看起来像 stackoverflow.com/questions/40659341/… 和 stackoverflow.com/questions/44576468/… 的可能重复
-
@MaxMacLeod 这些问题与这篇文章重复
标签: ios cookies ios9 wkwebview ios10