之前我在DecisionPolicyForNavigationResponse方法中获得了set-cookie:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler{
NSHTTPURLResponse *response = (NSHTTPURLResponse *)navigationResponse.response;
self.response = response;
}
但是在ios12导航中,此方法的响应无法再次获取set-cookie。是否可以用其他方法替换它?还是我可以在页面上获取set-cookie的其他方法?如果您听不懂,请告诉我。谢谢〜
答案 0 :(得分:3)
我遇到了与您相同的问题。我猜不再有通过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...
}
}
}];
}
快捷键4
if #available(iOS 11, *) {
webView.configuration.websiteDataStore.httpCookieStore.getAllCookies({ (cookies) in
for cookie in cookies {
//TODO...
}
})
}
如果您的应用支持较低版本,则以上代码在iOS 11+上可用 您应该将上述代码与您的代码分开。
希望它对您有用。