我有點驚訝Flash可以讓你重定向一個視頻請求。我做了一些挖的,它看起來像你可以得到的信息:
Handling Crossdomain.xml and 302 Redirects Using NetStream
他的文章專門談到的出現的,因爲事實上一些操作失敗,如果數據是來自不受信任的安全問題的麻煩服務器。由於他不知道他的視頻來自何處(302重定向),因此Flash Player不會信任它並阻止對加載的內容執行某些操作。
他是如何得到的內容實際上是加載從是在不應該被允許的文件做一個操作的服務器和他解析錯誤消息中的域信息:
try
{
var bit:BitmapData = new BitmapData(progressiveVideoPlayer.measuredWidth, progressiveVideoPlayer.measuredHeight, false, 0x000000);
bit.draw(progressiveVideoPlayer);
}
catch(error:SecurityError)
{
var list:Array = error.toString().split(" ");
var swfURL:String = list[7] as String;
var domain:String = list[10] as String;
domain = domain.substring(0, domain.length - 1);
var domainList:Array = domain.split("/");
var protocol:String = domainList[0] as String;
var address:String = domainList[2];
var policyFileURL:String = protocol + "//" + address + "/crossdomain.xml";
Security.loadPolicyFile(policyFileURL);
}
通知他正在做這樣他就可以加載策略文件(以允許對文件進行安全限制的操作)。我不確定這會對你有所幫助,但至少閱讀文章並思考。您也可以直接聯繫博客作者 - 他在Flash社區非常活躍。
嘿嘿!謝謝你的幫助,詹姆斯。這是一個非常骯髒,但非常有效的方式來獲得服務器。我想我可以嘗試在視頻上繪圖,如果它引發SecurityError,我可以解析出錯誤消息以獲取重定向位置。否則,我可以認爲它沒有重定向。 – aaaidan 2009-09-02 03:30:31
我承認這是非常骯髒的,因此你必須做出是否真的值得的決定。雖然我看不出太多傷害 - 只是要小心並給它一些好的測試。並祈禱行爲和錯誤消息格式不會在未來的Flash Player中更改... – 2009-09-02 04:48:09
嘿,是的。 由於swf和視頻在同一CDN網絡上以相同方式託管,因此我最終使用LocalConnection來獲取實際(最終)域,從而確保沒有跨域請求。 var realDomain:String =(new LocalConnection())。domain; – aaaidan 2009-09-16 01:51:32