5

我们正在开发一个网上商店,并使用第三方 UI 处理付款。

我们选择在 iframe inside out 结账页面内显示支付 UI,尽管(我们现在意识到)支付解决方案提供商建议使用顶级窗口。

现在发生的情况是,在 IE7/IE8 中,支付 UI 在第一次回发(在 iframe 内)时会丢失会话状态,而在 Firefox 中,它工作得很好。我们观察到支付 UI 是使用 ASP.NET 开发的。

我的印象是,就服务器而言,从 iframe 引用与从顶级窗口引用之间没有区别,但显然是有区别的。

有人有线索吗?iframe 做了什么可能对支付服务器产生影响,导致它丢失会话状态?

会不会(我突然意识到)是 cookie 处理的差异?也许更严格的安全?

4

3 回答 3

7

大概是这个原因造成的:

Internet Explorer 6 引入了对隐私首选项平台 (P3P) 项目的支持。P3P 标准指出,如果 FRAMESET 或父窗口引用 FRAME 或子窗口内的另一个站点,则子站点被视为第三方内容。Internet Explorer 使用默认的 Medium 隐私设置,默默地拒绝从第三方站点发送的 cookie。

http://support.microsoft.com/kb/323752/en-us

曾经听有人说IFrame其实是IE的一个新实例,但显然它有点复杂。

于 2009-04-17T09:37:37.967 回答
1

您可能会发现Milan Negovan 的这篇文章有助于解释为什么框架页面会获得单独的会话 ID。文章还谈到了上面 Gerrie Schenck 提到的 P3P 解决方案。

于 2009-04-17T09:49:14.507 回答
0

因此您的代码/站点的结构将类似于:

  1. 站点 A 的第 1 页有一个显示站点 B 的 iframe
  2. iframe 更新,现在显示站点 A 的第 2 页

当您右键单击 iframe 的内容时,您可以验证该 url 是否对应于站点 A?

如果您调试,第 2 页是否按预期触发断点?

于 2009-04-17T09:39:16.310 回答