2009-09-02 6 views
1

私は中央サーバからflvファイルを要求するフラッシュビデオプレーヤーを持っています。そのサーバーは、可能であればユーザーの国のサーバーに要求をリダイレクトする可能性があります。これはCDNとよく似ています。Flash/Actionscriptでリダイレクトを検出していますか?

このビデオプレイヤーでは、使用状況の統計情報も表示されます。私が報告したいのは、プレーヤーがビデオをストリーミングしている真のサーバー/ロケーションです。基本的に、リダイレクトされた場合、私はそれについて知りたいです。

URLLoaderからURLを抽出できないようですが、あなたが作成したURLRequestのコピーを保持することしかできません。

私は、302などのHTTPステータスイベントをリッスンできることに気付きました。しかし残念ながら、HTTPStatusEventオブジェクトにはリダイレクトされた場所は表示されません。

リダイレクトを監視し、リダイレクトされた場所を取得する方法に関するアイデアはありますか?

答えて

2

私は少し驚いています。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コミュニティでかなり活躍しています。

+0

ちょっとちょっと!助けてくれてありがとう、James。それは非常に汚いが、サーバーを手に入れるのにとても効果的な方法です。私はちょうどビデオを描画しようとすることができますし、それがSecurityErrorをスローする場合、私はリダイレクトされた場所を取得するためにエラーメッセージを解析することができます。それ以外の場合は、リダイレクトされていないと見なすことができます。 – aaaidan

+0

私はそれが*非常に汚れていると認めます。そのためには、それが本当に価値があるかどうかを判断する必要があります。私はそれにあまりにも多くの害を見ることができません - ちょうど慎重に、いくつかの良いテストを与える。そして、将来のFlash Playerで動作とエラーメッセージの形式が変わらないように祈ってください。 –

+0

Heh、yeah。 同じCDNネットワーク上でswfとビデオが同じ方法でホストされるため、LocalConnectionを使用して実際の(最終的な)ドメインを取得しました。これにより、クロスドメイン要求は発生しません。 var realDomain:String =(new LocalConnection())。domain; – aaaidan

関連する問題