首页 > 解决方案 > ios12-从 NSHTTPURLResponse 获取 set-cookie

问题描述

我之前在 decisionPolicyForNavigationResponse 方法中得到了 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 吗?如果您不能理解,请告诉我。谢谢~

标签: ios12

解决方案


我遇到了和你一样的问题。我想不再通过WKNavigationResponse. (从 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+ 上可用,如果您的应用支持较低版本,您应该将上述代码与您的分开。

希望它对你有用。


推荐阅读