ios12-从NSHTTPURLResponse获取set-cookie

时间:2018-09-19 02:20:36

标签: ios12

之前我在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的其他方法?如果您听不懂,请告诉我。谢谢〜

1 个答案:

答案 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+上可用 您应该将上述代码与您的代码分开。

希望它对您有用。