FlexでYouTubeビデオのサムネイルを表示するときにセキュリティーサンドボックス侵害が出る場合の対処
FlexでYouTubeのAPIを使ってビデオのサムネイルを表示しようとしていた。
ローカルでデバッグしている時には気づかなかったのだけど、サーバーにアップして試してみると次のエラーが出てサムネールを表示できない。そしてまともに操作できなくなる。
「i.ytimg.com」はYouTubeのイメージサーバーらしい。
Flexお得意のセキュリティー問題だ。Security.loadPolicyFile()すればいい事はわかる。
そこで第一の問題は、「http://i.ytimg.com/crossdomin.xml」
が存在して、どこからでも接続が許可されているかどうかだけど・・・ある!しかもどこからでも接続できるようになっている。すばらしい。Flickrと同じだ。Thanx YouTube!
第二の問題は、ytimg.comドメインのホストがどれくらいあるか?だけど、何回かエラーを出しているとi〜、i2〜というホストがあるようだとわかった。そこで、非常に愚直にi、i2、i3・・・と試してみた。すると、i4まであるらしいことがわかった。
ここまでわかれば後は簡単だ。アプリの初期化メソッドあたりでこのようにすればいい。
これでひとまずエラーは出なくなった。ただし、今後もi5などのホストが追加されることもあるだろうから、その時はまた対処することになるだろう・・・
しかし、ローカルでデバッグしてる時に「Security.allowDomain("www.youtube.com");」してても
やっぱりFlexのセキュリティー、めんちゃい。普通のHTMLページならどっか別のホストから画像を読んでくるなんて普通にやるじゃないかよぉ〜(^^);
結論。Flexはマッシュアップしづらい。
ローカルでデバッグしている時には気づかなかったのだけど、サーバーにアップして試してみると次のエラーが出てサムネールを表示できない。そしてまともに操作できなくなる。
SecurityError: Error #2122: セキュリティサンドボックス侵害 : Loader.content:・・・ は http://i.ytimg.com/vi/・・・/2.jpg にアクセスできません。ポリシーファイルが必要ですが、このメディアがロードされたとき、checkPolicyFile フラグが設定されませんでした。
at flash.display::Loader/get content()
at mx.controls::SWFLoader/get
「i.ytimg.com」はYouTubeのイメージサーバーらしい。
Flexお得意のセキュリティー問題だ。Security.loadPolicyFile()すればいい事はわかる。
そこで第一の問題は、「http://i.ytimg.com/crossdomin.xml」
が存在して、どこからでも接続が許可されているかどうかだけど・・・ある!しかもどこからでも接続できるようになっている。すばらしい。Flickrと同じだ。Thanx YouTube!
第二の問題は、ytimg.comドメインのホストがどれくらいあるか?だけど、何回かエラーを出しているとi〜、i2〜というホストがあるようだとわかった。そこで、非常に愚直にi、i2、i3・・・と試してみた。すると、i4まであるらしいことがわかった。
ここまでわかれば後は簡単だ。アプリの初期化メソッドあたりでこのようにすればいい。
Security.allowDomain("www.youtube.com"); Security.loadPolicyFile("http://i.ytimg.com/crossdomain.xml"); Security.loadPolicyFile("http://i2.ytimg.com/crossdomain.xml"); Security.loadPolicyFile("http://i3.ytimg.com/crossdomain.xml"); Security.loadPolicyFile("http://i4.ytimg.com/crossdomain.xml");
これでひとまずエラーは出なくなった。ただし、今後もi5などのホストが追加されることもあるだろうから、その時はまた対処することになるだろう・・・
しかし、ローカルでデバッグしてる時に「Security.allowDomain("www.youtube.com");」してても
*** セキュリティ Sandbox 違反 ***が出るのは、何とかならんのか?
SecurityDomain 'http://www.youtube.com/apiplayer?version=3' が互換性のないコンテキスト 'file:///・・・
やっぱりFlexのセキュリティー、めんちゃい。普通のHTMLページならどっか別のホストから画像を読んでくるなんて普通にやるじゃないかよぉ〜(^^);
結論。Flexはマッシュアップしづらい。
コメント
コメントを投稿