WKWebView 从 HTTP 请求中注入 cookie



我正在开发具有WKWebView和本机登录屏幕的iOS应用程序。在本机登录屏幕上,用户可以登录,这是通过返回一个JSON对象和两个cookie的API调用完成的。

我想做的是,当呼叫成功并且用户转到WKWebView屏幕时,他们也登录到显示的网站。

WKWebView已经加载,所以我的问题是我应该如何处理cookie,以便用户登录到WKWebView? 我已经阅读了这个问题和答案,但这对我不起作用。WKWebView没有显示任何内容,所以我认为它被阻止或循环。

更新我正在使用多个 WKWebViews,我发现如果我进行 API 调用,然后转到一个 WKWebView 它工作正常,我已经登录了。这里棘手的部分可能是我正在使用多个WKWebViews。

我终于找到了解决 cookie 问题的方法。

我必须为我的所有WKWebViews创建一个全局WKProcessPool,并且我必须在每次登录调用时从HTTPCookieStorage.shared.cookies发送cookie,以便我返回的cookie仍然连接到WKWebViews并且没有任何丢失。希望这对有同样问题的人有所帮助。

您的用例在 iOS11 中以优雅的方式通过 WKHTTPCookieStore 得到支持。通过 JSON API 登录并获取 cookie 后,使用 setCookie 自动登录 WKWebView 中的用户。

WKWebView正在iOS11中接受重大更新,并开辟了许多新的有趣可能性。在WKWebView WWDC中的自定义加载会话中有一个特定用例的演示。

不幸的是,如果您需要在iOS10或更早版本上完成此操作,这将无济于事。