如何从 WKWebView 启用和获取 cookie?

Posted

技术标签:

【中文标题】如何从 WKWebView 启用和获取 cookie?【英文标题】:How to enable and get cookies from WKWebView? 【发布时间】:2019-05-05 10:00:03 【问题描述】:

我想启用WKWebView 的cookies,这样如果用户登录gmail 或解决WKWebView 中的recaptcha,不应该要求再次登录gmail 或解决recaptcha。

我还想获取这些 cookie,以便我可以将这些 cookie 传递给其他屏幕上的 WKWebView 的其他实例。

我正在使用以下代码获取 cookie,但它返回 0 个 cookie。

[dataStore.httpCookieStore getAllCookies:^(NSArray *cookies) 
        [self->settings setCookies:cookies];
        [[NSNotificationCenter defaultCenter] postNotificationName:@"browserShouldReload" object:nil];
        [self.navigationController popViewControllerAnimated:YES];
    ];

请告诉我如何实现这一点。

【问题讨论】:

【参考方案1】:

管理应用程序上下文的 cookie 使用

HTTPCookieStorage 共享实例

获取所有 cookie:

HTTPCookieStorage.shared.cookies

如果存在[HTTPCookie]?,它将把所有的cookies放在一个HTTPCookie数组中


您也可以获取特定 url 的 cookie

HTTPCookieStorage.shared.cookies(for: "https://www.gmail.com")

如果你愿意,你也可以从你想要的日期删除所有 cookie

 HTTPCookieStorage.shared.removeCookies(since: Date.distantPast)

还有很多与HTTPCookieStorage.shared 对象有关的东西


请参阅 Apple 开发者文档中的 HTTPCookieStorage 了解更多信息

【讨论】:

以上是关于如何从 WKWebView 启用和获取 cookie?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 4 中从 WKWebView 获取 cookie 值?

从 WKWebView 获取所有 cookie

iOS开发:WKWebView的使用(设置cookie、不受信任的HTTPS、返回关闭按钮)

Swift 4 WKWebView cookie 获取和删除同步问题

将WKWebView Cookie同步到NSHTTPCookieStorage

WKWebView 从 HTTP 请求中注入 cookie