【发布时间】:2013-02-28 17:45:15
【问题描述】:
情况:
我有一个与 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,正如我所期望的那样。坦率地说,这对我来说就像一个错误。
【问题讨论】:
-
我在 6 版的 Safari Extensions 中也遇到了这个问题。还没有设法解决它。
-
我认为这似乎是 Safari 中的一个错误,如果是这种情况,解决这个问题可能完全不可能......
标签: php javascript zend-framework session safari