CrossDomain(1)
フラッシュで、異なるドメイン間の通信を行う場合、
クロスドメンの処理が必要になります。
Macromedia-デベロッパセンター - Macromedia Flash Player 7 におけるセキュリティの変更について
(中段くらいにある、「ポリシーファイルの基本」を参照)
Macromedia Flash非公式テクニカルノート - MovieClip.loadVariables
要するに、通信される側のサーバの最上層に、crossdomain.xml を設置する必要がある、とのことです。
実際にcrossdomain.xmlの中身は以下のようなもの。
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.macromedia.com/xml/dtds/
cross-domain-policy.dtd">
<!-- Policy file for http://www.mysite.com -->
<cross-domain-policy>
<allow-access-from domain="*.mysite.com" />
<allow-access-from domain="www.myothersite.com" />
</cross-domain-policy>
このようなファイルが置いてあるサーバであれば、他のサーバからアクセスが出来るようになります。
※ただし、このファイルを設置することにより、セキュリティ上の問題が発生することがあるようです。
gihyo.jp - ここが危ない!Web2.0のセキュリティ 第4回 Flash,JSONでのクロスドメインアクセス
このことを意識するのは、ほとんどの場合、APIなどの他社のサービスを使うときだと思います。
以前、とあるサイトのブログパーツを作ったときに、
先方のサーバにこのポリシーファイルを設置しなければならないのかと危惧しましたが、
結果的に必要ありませんでした。
その時の構成は、貼ってもらうブログには、指定のjavascriptを貼ってもらい、
そこからswfを読み込み、そのswf内から、データ通信を行うものでした。
なので、swfが置いてあるドメインと、データ通信を行うドメインは、同じ、ということで、
クロスドメインの問題は起こらなかった、という感じでした。
(たとえHTMLに貼っていても、swfから見た階層、となるようです)
FlickrのAPIを使用して、プライベートでコンテンツを作成した時に、
この問題に行き当たりました。
Flickrにはcrossdomain.xmlは設置されています。
http://api.flickr.com/crossdomain.xml
ただし、ここで注意しなければいけないのが、
api.flickr.com
にはあるのであって、
www.flickr.com
にはcrossdomainファイルはない、ということです。
(セキュリティ上の問題かと思います。)
なので、flickrのAPIからデータを読み込む時には、このドメインに合わせないといけない、という事です。
ここで上手いこといかなくて、かなり悩みました、、。
(この両者のドメインによるデータ等の違いは、、わかりません)
どうしても、www.flickr.comを使いたい(アップロードさせる、など)などの、
crossdomain.xmlが設置されていないAPIなどのサービスをFlashで使用したい場合は、
間にPHPなどのプログラムを挟むことによって解決できるようです。
DEV.CONVEXSTYLE.NET - Flickr の新着 RSS 読み込み時の crossdomain 問題回避方法
PHPも要勉強、です。
Flickr APIを利用して作成した自作コンテンツにもリンクを貼っておきます。
Mr.littleBIG - 年賀状ジェネレータ
Labels: Severside
<< Home