ios12-从 NSHTTPURLResponse 获取 set-cookie

标签 ios12

我之前在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/

相关文章:

ios - 当应用程序流畅运行时,您如何测试 UIActivityIndi​​catorView 是否在旋转?

swift - 如何刷新表格 View ?

ios - iOS 12-NSFaceIDUsageDescription突然不起作用

ios - 现在如何使用 CMSampleBufferGetImageBuffer 在 Swift 中正确获取 ImageBuffer?

ios - 通过 MDM 分发应用程序时 key 链数据丢失

带有 : not working properly 的 IOS 12 翻转过渡

ios - 由于部署目标早于设备,着色器性能数据可能不可用

ios12 - WatchOS 5 - 如何立即刷新您的复杂功能?

swift - UISearchController 模式呈现样式错误

ios - 在 iOS 12 中生成 QR/Aztec 代码的替代方法