1

对这个主题的大量答案和问题感到困惑。

现在,我接受不允许从 iFrame 跨域访问容器窗口/页面的安全 JS 情况,但在Fragment IdentiferspostMessage API的众多文章中引用的理想解决方案确实令人困惑。

我想做的是复制 vimeo 似乎已经成功的东西;他们新的 iframe 嵌入代码

<iframe src="http://player.vimeo.com/video/17263117" width="400" height="225" frameborder="0"></iframe>

使用http://a.vimeocdn.com/js/player_combined.opt.js?8ba54并且似乎能够从父加载页面在 iframe 的源中填写引荐来源网址。即 www.donkey.com/myvideo.html 被插入http://player.vimeo.com/video/17263117页面。通常,对于 JS 上的安全块,这对于简单的 parent.location.href 是不可能的。所以,我调查了它,并且一直在疯狂地追逐鹅,以找到如何做到这一点。

我试图了解他们的 JS 并使用 postMessage API,但没有任何东西可以展示。非常欢迎任何指导。

4

1 回答 1

4

它根本不需要从<iframe>源中获取它(安全限制阻止了这一点,正如您已经注意到的那样),它作为标头传递给服务器,并由其服务器在页面中呈现以供 JavaScript 使用,查看options页面中定义的变量。


让我们在这里举个例子:http: //www.jsfiddle.net/nick_craver/FfuPk/

如果您查看对http://player.vimeo.com/video/17263117的请求,

你会看到referrer被通过了:

Referer: http://fiddle.jshell.net/nick_craver/FfuPk/show/light/

在 iframe 加载的页面中的脚本块中,您将看到:

var options = {config: {
               //....
               "referrer":"http:\/\/fiddle.jshell.net\/nick_craver\/FfuPk\/show\/light\/"
               //....
              };

就是它最终从浏览器发送到服务器的标头中获取引荐来源网址的方式。

于 2010-11-30T14:18:52.297 回答