1

我正在尝试在 iOS 7 中使用 XAuth 跨域 cookie 技巧。它似乎不起作用。

当我在下面提到 cookie 时,实际上是同时设置了 cookie 和 localStorage 值。

我在 www.client1.com 上有一个页面,在 www.server.com 的 iframe 中打开一个静态网页,该网页设置了一个具有唯一 ID 的 cookie。接下来,我打开一个新窗口/选项卡,加载 www.client2.com,打开一个 iframe 到 www.server.com 并尝试从先前设置的 cookie 中访问相同的唯一 ID。

这适用于我尝试过的所有平台,包括以前版本的 iOS。但不是在 iOS 7 上。

我正在使用 postMessage 方法在 iframe 和主框架之间发送信息。

他们在 iOS 7 中发生了什么变化?有没有办法解决?

4

2 回答 2

2

我在 b.com 上的子 iframe 中遇到了类似的问题,该 iframe 具有应用程序缓存清单,托管在 a.com 提供的页面中。Safari 永远不会获取缓存清单,因此永远不会缓存子应用程序。也发生在 WebViews 中。

事实证明,iOS7 有一个新的隐私/安全设置来阻止cookie(在以前的 iOS 版本中,该设置用于接受cookie),我发现它必须设置为“从不”。默认设置是阻止“来自第三方和广告商”的 cookie,这就是我的缓存清单被阻止的原因,以及您的 cookie 没有被保留的原因。

我有专门的受众,所以我可以指导用户更改他们的设置。我想如果没有这种奢侈,您将不得不求助于redirection-fu 在域之间切换并返回以确保删除正确的cookie。但是,这种方法仍然可能不会让子 iframe 看到他们自己的 cookie——当 iframe 托管在来自不同域的页面中时,Safari 可能会阻止(即,不发送)这些 cookie。然而,我还没有测试证实这一点。

于 2013-10-05T01:57:21.900 回答
0

仅供参考...我是一名产品经理,他的应用程序在 iOS7.0 中进行的 cookie 更新存在问题 - 我们使用 cookie 来支持用户身份验证....以及适用于 Safari 和应用程序的新 cookie 策略。

此问题似乎已在 iOS 7.0.3 中得到解决

于 2013-10-24T16:50:21.513 回答