Flashのクロスドメインについて

iyamaです。

前回、Flash→Javascriptの連携のところで、クロスドメインについて 触れなかったため、notoさんからクレームが入っております。

仕方ないので今回はcrossdomain.xmlについて書きます。

Flashでいろいろと作成していくと、どうしても外部ファイルに アクセスさせたりしたくなります。 同じサーバー(ドメイン)内の場合、外部ファイルであっても気にする必要は ありませんが、外部サーバー上にあるファイルにアクセスする場合は 必ずクロスドメインセキュリティのことを考えなければなりません。

ここでの外部ファイルとは、画像ファイルやXML、jsファイルが想定されます。 画像ファイルなんかは別サーバーに置きたい!なんてことはよくある話ですよね。

swfを設置したサーバーと異なるサーバー(ドメイン)のファイルを参照する場合、 異なるサーバーにてswfを設置したサーバーからのアクセスを許可しましょう。

異なるサーバーのドメイン直下に「crossdomain.xml」という名前で 以下のような内容を記述しましょー。

crossdomain.xml
1
2
3
4
<cross-domain-policy>
  <allow-access-from domain="*" />
  <site-control permitted-cross-domain-policies="master-only" />
</cross-domain-policy>

ただし、許可するサイトを「"*“」で指定すると、セキュリティレベルは下がりますので swfの設置されるサーバーのドメインがわかっている場合は swfを設置したサーバーのドメインを指定するようにしましょう。

crossdomain.xmlの書き方については以下のサイトを参考にしてください。 FlashPlayer9、FlashPlayer10によって若干仕様が変更になっています。 細かく設定したい場合は、その辺も気をつけて記述しましょう。

クロスドメインポリシーファイルの仕様

また、豆知識的に言うと、silverlightアプリケーションでもFlashと同様な クロスドメインのセキュリティがあって、外部サーバーにはポリシーファイルを 設置する必要があります。 silverlightの場合はclientaccesspolicy.xml、またはFlashと同じcrossdomain.xmlで対応することができます。

以上です。 あ、明日は名古屋や。

Comments