2010-11-30 69 views
1

由於這個問題的答案和問題的數量龐大。vimeo/youtube等如何在其iframe中獲取引薦來源網址?

現在,我接受安全JS形勢不允許與iframe跨域訪問的容器窗口/頁,但在片段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的來源。即www.donkey.com/myvideo.html插入到http://player.vimeo.com/video/17263117頁面。通常,對於JS上的安全塊,使用簡單的parent.location.href是不可能的。所以,我研究了它,並且一直在進行一場真正的瘋狂追逐,看看如何做到這一點。

我試着瞭解他們的JS,並使用postMessage API玩,但沒有任何顯示。任何指導都非常受歡迎。

回答

4

它根本不需要根據來源獲得它(安全限制可以防止這種情況,因爲您已經注意到了),它作爲標題傳遞給服務器,並且通過其服務器呈現在頁面中要使用的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加載的頁面中阻止:

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

所以這就是它是如何獲取引用,最終從瀏覽器發送到服務器的標頭。

+0

你的意思是使用HTTP_Referer嗎?你總是會聽到這對現代瀏覽器來說有多不可思議,不是嗎? – waxical 2010-11-30 17:05:23

相關問題