【问题标题】:ios12-Get set-cookie from NSHTTPURLResponseios12-从 NSHTTPURLResponse 获取 set-cookie
【发布时间】:2018-09-19 02:20:36
【问题描述】:

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


    【解决方案1】:

    我遇到了和你一样的问题。我想不再通过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...
                    }
                }
            }];
    }
    

    斯威夫特 4

    if #available(iOS 11, *) {
        webView.configuration.websiteDataStore.httpCookieStore.getAllCookies({ (cookies) in
            for cookie in cookies {
                  //TODO...   
            }
        })
    }
    

    以上代码适用于 iOS 11+,如果您的应用支持较低版本 你应该把上面的代码和你的分开。

    希望它对你有用。

    【讨论】:

    • 它对我有用!但它还有另一个问题,我需要 cookie 作为响应,而不是这个 wkwebview 上的 cookie。我能得到吗?
    • 你遇到过completionHandler有时候不走吗?
    • 为什么在响应中需要它?
    • 因为响应的cookie与本页的cookie不同
    • 我没有遇到这个问题。我能够在 WKWebview 中使用与在 navigation.response 中使用相同的 cookie。如果您进一步将 cookie 用于 HTTPRequest,则需要使用以下方法将其保存在 HTTPCookieStorage 中 setCookies(_ cookies: [HTTPCookie], for URL: URL?, mainDocumentURL: URL?)
    猜你喜欢
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 2020-02-14
    • 2016-03-05
    • 2021-10-21
    相关资源
    最近更新 更多