ios12-从 NSHTTPURLResponse 获取 set-cookie

ios12-Get set-cookie from NSHTTPURLResponse

我之前在 decidePolicyForNavigationResponse 方法中得到 set-cookie 是这样的:

- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler{
       NSHTTPURLResponse *response = (NSHTTPURLResponse *)navigationResponse.response;
       self.response = response;
}

但是在ios12navigationResponse中这个方法无法获取set-cookieagain.Can我有其他方法可以替代吗?或者有没有其他方法可以让我在页面上设置 cookie?如果您不明白,请告诉我。谢谢~

我遇到了和你一样的问题。我想不再通过 WKNavigationResponse 检索 cookie。 (从 iOS 12.* 开始)

WKWebview的cookies存放在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+,如果您的应用支持较低版本 你应该把上面的代码和你的分开。

希望对你有用。