iFrame 中的 SWFobject:跨域的东西?

Posted

技术标签:

【中文标题】iFrame 中的 SWFobject:跨域的东西?【英文标题】:SWFobject inside iFrame: Cross domain stuff? 【发布时间】:2012-05-27 15:41:35 【问题描述】:

我有一个带有嵌入式 Flash 文件的简单 html 站点,并在上面使用了 SWFobject。

此站点是 iframe 的 src。如果我打开带有 iframe 的网站,控制台会告诉我……

Unsafe javascript attempt to access frame with URL file:///experiment/iframe-
test/index.html from frame with URL http://localhost.lan/embed/GYZA. Domains,
protocols and ports must match. -> swfobject.js

我想知道父窗口(其中包含 iframe)与 iframe 内的 swfobjet 有什么关系?因此,如上所述,swfobject 用于将 flash 嵌入到加载到 iframe 中的子页面上。 iframe-test/index.html 网站刚刚……

<body>
    <iframe src="http://localhost.lan/embed/GYZA"   frameborder="0" allowfullscreen></iframe>
</body>

……就在上面。而已。为什么我有unsafe javascript attempt here

对此有什么想法吗?提前谢谢你。

更新:好吧,我刚刚意识到这发生在 Youtube 和 Vimeo 以及它们的嵌入式播放器上。我使用的是 chrome 控制台,同样的错误发生在 Youtube 和 Vimeo。

【问题讨论】:

【参考方案1】:

现在不知道这是否有用,但是会抛出错误,因为浏览器将file:///experiment/iframe-test/index.htmlhttp://localhost.lan/embed/GYZA 视为两个不同的域,因此浏览器的跨域策略认为这是不安全的。根据用户使用的浏览器,这可能是不安全的 - 您正在加载的远程页面可能包含有害脚本,这些脚本可能会破坏您正在查看的当前页面或尝试窃取各种信息。您可以找到更多信息here。

【讨论】:

【参考方案2】:

我刚刚验证了马特的更新问题。

每当 Flash 对象嵌入到跨域 iframe 中时,都会引发跨域异常。 Youtube 和 Vimeo 也是如此。

例如,看看这个嵌入了 iFrame 的 jsfiddle:http://jsfiddle.net/bkCdB/

<object  ><param name="movie" value="http://www.youtube.com/v/6V_DsL1x1uY?version=3&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/6V_DsL1x1uY?version=3&amp;hl=en_US" type="application/x-shockwave-flash"   allowscriptaccess="always" allowfullscreen="true"></embed></object>

【讨论】:

以上是关于iFrame 中的 SWFobject:跨域的东西?的主要内容,如果未能解决你的问题,请参考以下文章

iframe与父页面之间通讯跨域问题

Jsonp跨域

如何将焦点设置在跨域的 iframe 上

前端跨域的方式

跨域 iFrame 中的凭据填充

关于跨域的N种方法实践之iframe+domain