クロスドメインに泣く
2009/01/15 21:28 - AS3.0
コンピュータプログラムにおいて、外部ファイルを参照するということは当たり前に発生します。
ネットワーク上で外部ファイルにアクセスするとき意識しなければならない点に、クロスドメインというのがありますね。
皆さんご存知のとおり、外部ファイルと、その外部ファイルにアクセスする swf が同一ドメイン上に存在しない場合、アクセスされる側のドメイン、つまり外部ファイルが存在するドメインに crossdomain.xml という XML を置かなければならないというアレです。
WonderFl は当然のことながら、ユーザが何かファイルを WonderFl のサーバにアップロードすることはできません。
よって、外部ファイル(例えば画像ファイル)にアクセスするような作品をコーディングしたい場合、このクロスドメインの解決が必要になるのは、皆様先刻ご承知のとおり。
WonderFl においてはそのクロスドメイン問題を簡単にするため、5ivestar さんがプロクシーを用意してくださってます。
でもよい学習機会だからまずはこのクロスドメイン解決というヤツを自前でやってみようじゃないの、と思ってはみたものの、私の所持するネットワーク資源では、Flash Player の仕様上、どうにもならないことが分かって打ちひしがれたというのが今回の話題。
なお Flash Player のバージョンは 10 です。
バージョン 9 なら何とかなったらしいんですが、Vector もネイティブ 3D も使えない Flash Player 9 になんて戻りたくねっす。
crossdomain.xml は大前提として「ルートに置くこと」が要求されます。
crossdomain.xml はポリシーファイルとも呼ばれ、ルートの crossdomain.xml は特にマスターポリシーファイルと呼ばれるとのこと。
Flash player 10 からは、マスターポリシーファイルが存在しない、あるいはマスターポリシーファイルが存在しても他のポリシーファイルを許可するように記述されていない場合、マスターポリシーファイル以外を無視するように仕様が変更されたそうですね。
私は現在、nifty と fc2 を利用していますが、このマスターポリシーファイルで引っかかりましたですよ。 それぞれのドメインは以下のようになってます。
nifty web : http://homepage3.nifty.com/aquioux/ fc2 blog : http://aquioux.blog48.fc2.com/ fc2 web : http://aquioux.web.fc2.com/
nifty ですが、ドメインのルートにはユーザの管理が及びません。
ダメ元で http://homepage3.nifty.com/aquioux/crossdomain.xml というのを作って試してみましたが、「マスターポリシーファイルが無いからこの処理を停止します」的なエラーメッセージが出て中断しました。 まぁ予想どおりの結果ですね。しょぼん。
次に fc2。
まず blog の方ですがアップロードしたファイルは以下のような url になります。
http://blog-imgs-26.fc2.com/a/q/u/aquioux/20081103-001.jpg
これも nifty 同様、ルートにはユーザの管理が及ばないのでスルー。
では web の方はどうか。
web は ftp 転送が可能なので http://aquioux.web.fc2.com/crossdomain.xml を置くことが可能です。
やったーこれでできるー、と喜んだのもつかの間。 実際に試してみたらできません。
なぜか?
fc2 web は外部から html 以外のファイルに直接アクセスしようとすると弾く仕様になっているとのこと。 画像置き場として使用されないようにするための処置だそうな。
ガッカリ。ぬか喜びでした。
これはよーするに、無料サービス使用なんてセコいことしてないで、独自ドメイン取るなり、有料のホスティングサービスを利用するなりせよという、天の声なんでしょうかねぇ。
ちなみに、私のクロスドメインデビュー作は以下のものです。
perlineNoise と DisplacementMapFilter でイメージをぐにゃぐにゃさせてるだけの代物。 以前、ここで示したものを WonderFl に投稿したものです。