【问题标题】:Cross domain cookies in iOS 7iOS 7 中的跨域 cookie
【发布时间】:2013-09-18 17:10:50
【问题描述】:

我正在尝试在 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 中发生了什么变化?有没有办法解决这个问题?

【问题讨论】:

    标签: javascript ios iframe cookies ios7


    【解决方案1】:

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

    原来 iOS7 有一个新的隐私/安全设置用于 blocking cookie(在以前的 iOS 版本中,该设置用于 accepting cookie),我找到了必须设置为“从不”。默认设置是阻止“来自第三方和广告商”的 cookie,这就是我的缓存清单被阻止的原因,也是您的 cookie 没有被保留的原因。

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

    【讨论】:

    • 注意到了同样的行为。我的应用程序需要使用默认设置。 Evercookies hack-ish 的 PNG 存储方法、etag 以及我不记得的另一件事。它没有抛光,它依赖于故障。我的需要稳定。
    【解决方案2】:

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

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

    【讨论】:

    • 说真的!如果是这样的话,那就太棒了。
    • 据我发现,iOS 7.0.3 没有任何变化。在另一个域的 iFrame 中设置时,我仍然无法从一个域的 cookie 中获取 iFrame 中的值。
    • 我看到的和@GusOst 一样——即使在 7.0.4 中也仍然损坏。应用程序和 Safari 处理第三方 cookie 的方式可能存在细微差别?
    猜你喜欢
    • 2011-03-21
    • 2018-12-15
    • 1970-01-01
    • 2012-10-08
    • 2012-01-19
    • 2011-03-15
    相关资源
    最近更新 更多