WKWebView 从 HTTP 请求中注入 cookie

Posted

技术标签:

【中文标题】WKWebView 从 HTTP 请求中注入 cookie【英文标题】:WKWebView inject cookies from HTTP request 【发布时间】:2017-07-16 18:08:14 【问题描述】:

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

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

WKWebView 已经加载,所以我的问题是我应该如何处理 cookie 以便用户登录 WKWebView? 我读过this question & answer 但这对我不起作用。 WKWebView 没有显示任何内容,所以我认为它被阻止或处于循环中。

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

【问题讨论】:

也许这个答案对你有帮助***.com/questions/26573137/… 【参考方案1】:

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

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

【讨论】:

我在处理 cookie 方面需要帮助【参考方案2】:

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

WKWebView 在 iOS11 中获得了重大更新,并开辟了许多新的有趣的可能性。 Customized Loading in WKWebView WWDC session 中有您特定用例的演示。

很遗憾,如果您需要为 iOS10 或更早版本完成此操作,这将无济于事。

【讨论】:

看起来很有希望,但我现在也需要支持 iOS 10

以上是关于WKWebView 从 HTTP 请求中注入 cookie的主要内容,如果未能解决你的问题,请参考以下文章

WKWebview 注入header

从 WKWebview 检索 HTTP 响应标头

将本地存储从 swift 注入到 WKWebview

从swift注入本地存储到WKWebview

Swift:向WKWebView注入JS和CSS不起作用

sql注入之请求方式类注入