在 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 在 safari 中打开来自某个域的链接
IOS WKWebView 和 UIWebView 不加载 JavaScript 注册表单,而 Safari 加载