在 WKWebView 和 Safari 之间共享会话

Posted

技术标签:

【中文标题】在 WKWebView 和 Safari 之间共享会话【英文标题】:Sharing a session between a WKWebView and Safari 【发布时间】:2021-04-21 15:08:49 【问题描述】:

我有一个 ios 应用程序对 api 访问进行身份验证,我有一个请求将用户放入 safari,而不是 WKWebView,但仍然保持他们的身份验证。

是否可以在 iOS 应用和完整版 Safari 之间安全地共享会话?

我已经研究了 WKProcesspools,但我不确定它是否会完全做到。

【问题讨论】:

【参考方案1】:

不确定 WKProcesspools,但您可以使用查询参数共享会话。 格式化您的 weburl 以包含验证令牌作为查询参数。

当您通过 API 验证用户时,您必须从响应中获取令牌。将此令牌作为查询参数传递到您的 url 并重定向到 Safari。

URL - https://www.example.com/page1
URL with token - https://www.example.com/page1?token=asdfv12324fvfropfc23as

特别注意防止复制/粘贴令牌:

创建令牌时,将 IP 地址或 MAC 地址作为 API 的参数传递,并根据这些地址检查请求是否来自同一地址。这将负责设备身份验证。

【讨论】:

我们确实自己提出了这种类型的解决方案,但基本上我们最终会这样做,所以我将其标记为已接受的答案,

以上是关于在 WKWebView 和 Safari 之间共享会话的主要内容,如果未能解决你的问题,请参考以下文章

Wikipedia 在 iPad 上以不同方式呈现 WkWebView 和 Safari

wkwebview和UIWebView调试技巧

WKWebView 在 safari 中打开来自某个域的链接

IOS WKWebView 和 UIWebView 不加载 JavaScript 注册表单,而 Safari 加载

从 WKWebView 调用时,无法使用 JavaScript 在移动 Safari 中打开链接

为啥 wkwebview 在科尔多瓦的运行速度比移动 safari 慢?