2010-01-12 46 views
1

我工作的公司有自己的基於Flash的視頻播放器,我從我們的高管那裏得到的問題是「我們能否告訴我們的播放器嵌入在哪個網站上?」首先,我假設我可以使用Apache mod_rewrite,提取HTTP_REFFER,並將其追加到請求的URL的末尾。因此,當瀏覽器得到http://.../viewer.swf,我可以拍打?ref = otherdomain.com是否有可能獲得我的Flash應用程序嵌入的域名?

但是,我不認爲我們的CDN會迎合我們的htaccess文件。另外,大多數access_log條目都顯示一個破折號而不是域。

所以我把這個問題放在這裏,看看我是否有任何想法或解決方案。目前,一切都指向'不可能'。

回答

0

警告:我不知道閃光在所有...

不知道你到底需要怎樣抓住這一點,但有可能是您的flash播放器搶客戶端上的URL(或含有框架也許?),然後POST/PUT/GET回到服務器?我認爲它可以在檢索viewer.swf之後,但在打開內容流之前(玩家如何工作的基本假設)進行。

不確定這是否有用。

+0

不,我不知道Flash本身是不可能的。 – 2010-01-12 19:31:46

0

使用ExternalInterface的,它可以使給JavaScript函數的調用父頁面:

import flash.external.ExternalInterface; 

var url:String = ExternalInterface.call('window.location.href.toString'); 

與此唯一的問題是,如果用戶關閉JavaScript,那麼網址值爲空。

+0

這是我意識到的一種方法,但不幸的是,allowScriptAccess被設置爲sameDomain,並且通常不會被像MySpace.com這樣的網站設置爲。因此,如果不利用遠程站點的安全性,它就不太可靠。 – 2010-01-12 19:34:56

0

引用者通常存儲在每個請求的訪問日誌文件中,不是嗎?

對於嵌入式電影播放器​​的調用來說,擦亮CDN的訪問日誌文件不是最簡單的嗎?

如果這不是一個選項:我不是Flash男人,但它必須有可能使用Actionscript以某種方式獲得電影內的電影引用者,而不會遇到跨域安全問題。畢竟,當對電影的請求發出時,它是可用的信息。

+0

現在我還沒有測試它,我計劃很快,所以我打算將URL設置爲我們的原始服務器,然後拉出日誌。然而,註冊請求的訪問日誌,你會看到引用域的「列」只是一個「 - 」。所以我猜測Apache服務器不知道請求來自哪裏,因爲它是Flash的內部。 如果我的測試顯示不同的期望,我一定會跟進。 – 2010-01-12 19:59:11

+0

啊,我明白了,我重讀了那部分,對不起。從我從快速瀏覽中看到的Google,這確實是一個問題。我真的不明白爲什麼瀏覽器不會將請求發送給SWF。如果您的研究中出現任何問題,我會很感興趣。 – 2010-01-12 20:08:18

0

這可能是錯誤的,但我認爲你可以像這樣得到它。把(在舞臺上或在你的文檔類在時間軸上)在你的應用程序的根目錄下面的代碼:

trace(this.loaderInfo.url) 

如果我沒看錯的是會幫你的。幾年前,我爲視頻服務製作了類似的視頻服務,其中的視頻名稱來源於其所在文件夾的名稱。讓我知道是否有幫助!

編輯:哦,對 - 一旦你擁有了它,編寫一個Web服務非常簡單,它將接受它作爲一個字符串並將其存儲在數據庫或其他內容中。您甚至可以將其綁定到分析服務 - MyAnalyticsFunction.call(myUrl) - 併爲您提供幫助,但這取決於您如何設置。

但是,簡短的回答 - 是的,.swfs知道他們住在哪裏。

+0

是的,SWF知道它的位置,但只有它是絕對URL(文件所在的位置)。 loaderInfo.url將不會返回正在查看的SWF文件的地址。 – 2010-01-12 21:26:31

+0

哦,對不起 - 我不是很欣賞這個區別。 這有點不好意思,但如果它真的很重要,你可以將javascript window.location調用作爲你的嵌入代碼的一部分,並作爲FlashVar傳入,然後從那裏開始?這樣,至少JS不是來自.swf,儘管我不知道它會如何工作。 祝你好運,讓我們知道,如果你想出點什麼! – Myk 2010-01-12 22:15:52

相關問題