我之前在decidePolicyForNavigationResponse方法中得到了set-cookie,如下所示:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler{
NSHTTPURLResponse *response = (NSHTTPURLResponse *)navigationResponse.response;
self.response = response;
}
但是在ios12中,这个方法中的navigationResponse无法再次获取set-cookie。我可以有其他方法来代替它吗?或者还有其他方法可以在页面上获取 set-cookie 吗?如果您无法理解,请告诉我。谢谢~
最佳答案
我遇到了和你一样的问题。我猜想不再通过 WKNavigationResponse
检索 cookie。 (从 iOS 12.* 开始)
WKWebview的cookie存储在NSHTTPCookieStorage.sharedHTTPCookieStorage()
您可以尝试重新设计如下代码,而不是您的代码
Objective-C
if (@available(iOS 11.0, *)) { //available on iOS 11+
WKHTTPCookieStore *cookieStore = webView.configuration.websiteDataStore.httpCookieStore;
[cookieStore getAllCookies:^(NSArray* cookies) {
if (cookies.count > 0) {
for (NSHTTPCookie *cookie in cookies) {
//TODO...
}
}
}];
}
swift 4
if #available(iOS 11, *) {
webView.configuration.websiteDataStore.httpCookieStore.getAllCookies({ (cookies) in
for cookie in cookies {
//TODO...
}
})
}
如果您的应用程序支持较低版本,以上代码可在 iOS 11+ 上使用 您应该将上面的代码与您的代码分开。
希望它对您有用。
关于ios12-从 NSHTTPURLResponse 获取 set-cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52397105/