情况:
我有一个与 PHP/MySQL/Zend Framework 1.12 后端通信的 Javascript/jQuery Web 应用程序。Web 应用程序在 iFrame 内运行(在 iframe 模式下使用 jQuery fancybox 加载)。
应用程序在后端创建一个对象并用它保存当前会话 ID。然后它在前端显示对象的属性,并在用户与应用程序交互时通过 ajax 调用在后端修改对象。会话 ID 用于检查 ajax 请求是否来自同一用户(用户未登录,因此这是检查的唯一方法)。
我使用 jQuery 进行 ajax 调用,使用 Zend_Session 处理 PHP/Zend 中的会话。
问题:
现在,问题是在 safari 6 中,这些 ajax 请求具有不同的会话 ID,因此它们与存储在后端模型对象中的会话 ID 不匹配,并且访问被拒绝。
只有在 iframe 中运行时才会发生这种情况,而不是在任何其他浏览器上,而不是在其他版本的 safari(5 或更低版本)上
有谁知道什么会导致这种情况以及如何处理它?
更多信息:
整个应用程序在 iframe 中运行,会话 ID 也存储在后端模型中。所以我认为所有这些调用都具有相同的会话 ID。
另一件事:一旦我在单独的选项卡中运行应用程序,然后再次在 iframe 中运行,问题就消失了:从那时起,直到我终止浏览器会话,我每次都得到相同的会话 ID,正如我所期望的那样。坦率地说,这对我来说就像一个错误。