asg*_*ant 7 iframe mobile-safari session-cookies ios wkwebview
我有一个iframed到第三方网页的网站,它本身嵌入在WkWebViewiOS应用程序中.移动Safari和WkWebView拒绝为我的网站发送的会话(仅限http)cookie,基本上打破了一切.移动Safari中的解决方法是在设置中启用所有cookie(yuck)或指示用户直接访问我的站点(因此,就Safari而言,它被视为"我访问过的站点"); 这些都不是特别好吃.我没有找到解决办法WkWebView.
这个问题分为两个部分:
1)我正在考虑在我的网站中实现一个重定向服务,它将目标URL作为参数,并在页面加载时简单地将用户重定向到该URL.然后,第三方网站可以链接到我的重定向页面,其URL设置为立即向用户发送,希望这将被视为"访问"我的域,从而启用cookie.
或者,第三方站点可以打开我的站点的新选项卡,该选项卡会在加载时立即关闭.我希望这会是一种不太理想的用户体验,所以不愿意走这条路.
最重要的是"POST到隐藏的iframe"技巧(第三方页面在隐藏的iframe中POST到我的域名),但是因为SO问题表明该技巧不再有效.
这些是可行的解决方案之一,还是Apple阻止了这些设置会话cookie的方法?有没有更好的解决方案,我没有考虑过?
2)有没有办法设置cookie接受政策,WkWebViews可以这样做UiWebViews?我对StackOverflow的搜索建议没有,但我读到的答案可能基于旧版本的iOS(该应用程序需要iOS 9+).
如果没有应用程序代码解决WkWebViews方案,移动Safari的解决方案是否也适用WkWebViews?
我刚刚遇到了类似的问题。我有一个 WkWebView,它加载我的 Web 应用程序,该应用程序有一个 iframe 从特定服务器加载登录屏幕。登录页面会抱怨 iframe 不允许 cookie。
当我直接在 Web 视图中加载登录页面时,它会工作,并且当我随后在 iframe 中再次测试它时,它也会奇怪地开始工作。
我对此找到的最好解释是,只有当 Web 视图直接加载 iframe 的域至少一次时,才允许将 cookie 保存在 iframe 中。知道这一点后,我能够实施一种解决方法。
通过简单地使用 webview ping 登录页面一次,我使用 WKNavigationDelegate 等待,直到开始从服务器接收一些数据。一旦发生这种情况,我会让 Web 视图加载包含 iframe 的页面。现在 iframe 能够一致地加载登录屏幕。
| 归档时间: |
|
| 查看次数: |
2426 次 |
| 最近记录: |