对这个主题的大量答案和问题感到困惑。
现在,我接受了不允许从 iFrame 跨域访问容器窗口/页面的安全 JS 情况,但在Fragment Identifers 或postMessage 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 源中填写引荐来源网址。 IE。 www.donkey.com/myvideo.html 被插入到 http://player.vimeo.com/video/17263117 中页。通常,对于 JS 上的安全 block ,这对于简单的 parent.location.href 是不可能的。因此,我对其进行了调查,并一直在真正疯狂地追逐这只鹅,以找出如何做到这一点。
我试图理解他们的 JS 并尝试使用 postMessage API,但没有任何东西可以展示。非常欢迎任何指导。
最佳答案
它不需要从 <iframe>
中获取它根本没有源(安全限制阻止了这种情况,正如您已经注意到的那样),它作为 header 传递给服务器,并由他们的服务器在页面中呈现以供 JavaScript 使用,请查看 options
页面中定义的变量。
让我们在这里举个例子:http://www.jsfiddle.net/nick_craver/FfuPk/
如果您查看对 http://player.vimeo.com/video/17263117 的请求,
您会看到引荐来源网址已通过:
Referer: http://fiddle.jshell.net/nick_craver/FfuPk/show/light/
在 iframe 加载的页面的脚本 block 中,您将看到:
var options = {config: {
//....
"referrer":"http:\/\/fiddle.jshell.net\/nick_craver\/FfuPk\/show\/light\/"
//....
};
所以这就是它是如何获取引荐来源网址的,最终是从您的浏览器发送到服务器的 header 。
关于php - vimeo/youtube 等如何在其 iframe 中获取引荐来源网址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4314635/