【问题标题】:Internet Explorer, Flash POST variables and IFRAMESInternet Explorer、Flash POST 变量和 IFRAMES
【发布时间】:2012-03-05 06:57:01
【问题描述】:

我的一位客户遇到了一些奇怪的问题,该问题是嵌入在 iframe 中的 flash 对象,该对象调用 PHP 脚本并传递了 POST 变量。

我想我终于大致弄清楚了发生了什么,但希望能澄清我的预感是否正确。

设置有点复杂,请多多包涵……

她的网站使用其中一种网站构建器设置,因此它的功能有点受限。她想包含我的 Flash 应用程序,但不能,因此作为一种变通方法,她将 Flash 应用程序放在另一个域中,然后将其嵌入到 iframe 中。

Flash 应用程序所做的部分工作是打开一个单独的窗口,然后调用 PHP 脚本,将 POST 变量传递给它。

在 Chrome、Safari 和 Firefox 上都可以使用。在 IE 上,好像没有发布任何 POST 变量。

通过 HTTP 嗅探器,我能够确认变量确实已发送,但结果清楚地表明 PHP 脚本没有看到它们。

这真的让我发疯了,直到我想起这里有两个不同的域。

还记得她是如何将来自一个域的内容嵌入到另一个域的 iframe 中的吗?

所以我认为这是导致 POST 数据在服务器端被阻止的跨域安全问题。

但是为什么它在其他浏览器中也能工作呢?

这是我的理论...

在 Chrome、Firefox 和 Safari 中,浏览器将数据发送到脚本,其中 IFrame 内的页面作为发起者。因此,发起者和目标脚本在同一个域中。

在 IE 中,浏览器将数据发送到以 CONTAINER 页面为发起者的脚本。在这种情况下,发起者和目标脚本位于不同的域中,服务器会阻止数据。

那么,你怎么看?这听起来像是一个有效的解释吗?这是 IE 的已知功能吗?在这种情况下,符合标准的浏览器应该做什么?

更新:

事实证明,问题不仅仅在于跨域。即使 iframe 内容来自同一个站点,它仍然会发生。虽然只在 IE 中。很奇怪吧?

【问题讨论】:

    标签: flash internet-explorer post iframe cross-domain


    【解决方案1】:

    我过去曾解决过 Flash 跨域问题,但没有遇到过这种特殊情况。我认为她的站点构建器不会允许将跨域策略文件部署到她站点的根目录?

    如果是这样,您可以尝试部署 crossdomain.xml:

    <cross-domain-policy>
    <allow-access-from domain="*.flashfiledomain.com" secure="false"/>
    </cross-domain-policy>
    

    ...到她网站的根目录,看看是否能解决问题。我假设 Flash 文件和 PHP 脚本都在同一个域中?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-25
      • 2010-12-11
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 2014-05-20
      相关资源
      最近更新 更多