【发布时间】:2017-06-15 22:38:23
【问题描述】:
我有一个网站,该网站被 iframe 嵌入到第 3 方网页中,该网页本身嵌入在 iOS 应用程序的 WkWebView 中。 Mobile Safari 和WkWebView 拒绝为我的网站发送的会话(仅限http)cookie,基本上破坏了一切。移动 Safari 中的解决方法是启用设置中的所有 cookie(糟糕)或指示用户直接访问我的网站(因此,就 Safari 而言,它算作“我访问过的网站”);这些都不是特别好吃。我没有找到WkWebView 的解决方法。
这个问题分为两部分:
1) 我正在考虑在我的网站中实现重定向服务,该服务将目标 URL 作为参数,并在页面加载时简单地将用户重定向到该 URL。然后,第 3 方站点可以链接到我的重定向页面,并将 URL 设置为立即将用户发送回来,希望这将被视为“访问”我的域,从而能够加载 cookie。
或者,第 3 方网站可以为我的网站打开一个新标签,该标签会在加载时立即关闭。然而,我预计这将是一个不太理想的用户体验,因此不希望走这条路。
最好的办法是“POST 到隐藏的 iframe”技巧(第 3 方页面在隐藏的 iframe 中发布到我的域),但 SO 问题表明该技巧不再有效。
这些是可行的解决方案,还是 Apple 也阻止了这些设置会话 cookie 的方法?有没有更好的解决方案我没有考虑过?
2) 有没有办法用WkWebViews 设置cookie 接受政策,就像UiWebViews 一样?我对 StackOverflow 的搜索表明没有,但我阅读的答案可能基于旧版本的 iOS(该应用需要 iOS 9+)。
如果WkWebViews 没有应用代码解决方案,移动版Safari 的解决方案是否也适用于WkWebViews?
【问题讨论】:
-
我遇到了同样的问题,UIWebView。我通过实现一个覆盖内置 HTTP/HTTPS 协议的 NSURLProtocol 子类来修复它。您可以检查 WKWebView 是否适用于 NSURLProtocol。至于如何继承 NSURLProtocol,可以查看苹果的示例代码:CustomHTTPProtocol
-
你有没有找到更多关于这个的信息?
-
@jdeuce 不,我没有。
-
你找到解决办法了吗?
-
抱歉,我没有。不过,在过去 3 年中,可能发生了一些变化,使这成为可能。
标签: ios iframe mobile-safari session-cookies wkwebview