Flash Player 7よりデフォルトで同じドメインであっても、他サーバの外部ファイルへのアクセスが制限された。swfファイルを置いているサーバとDBと連携したアプリケーションを動作させているサーバが分かれている場合に、不都合が発生する。
http://www.macromedia.com/support/flash/ts/documents/loadvars_security.htm
これを回避するために、swfファイルを置いているサーバのhtdocsルートにポリシーファイル(単純なXMLファイル)を置くと、同じドメインのサーバ、もしくはドメイン越えをして外部ファイルにアクセスできるらしい。ちなみに、この機能はFlash Player 7以降で動作する。よって、Flash Player6以前と混在する現状では、サブドメイン同士のサーバで通信するのが現実的。
http://www.macromedia.com/support/flash/ts/documents/loadvars_security.htm
解決策は以下の通り。
www.hogehoge.comと言うサーバに”foo.swf”というファイルがあるとし、”foo.bar”がdata.hogehoge.comというサーバ内の”test.dat”という外部変数ファイルをロードするとする。この状況では、Flash Player 6は同サブドメイン内なのでロード可能であるが、Flash Player 7は同ドメインの他サーバにもアクセスできないのでロードは不可能である。
ロードされるファイルがあるdata.hogehoge.comのドキュメントルートに、”crossdomain.xml”というファイルを生成し、その中に自サーバにアクセスできるサーバ/ドメインをしているすることでこの問題を解決できる。
URLで、”http://data.hogehoge.com/crossdomain.xml”となるように、以下のような内容の”corssdomain.xml”を生成する。
<?xml version=”1.0″?>
<!DOCTYPE cross-domain-policy SYSTEM “http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd”>
<cross-domain-policy>
<allow-access-from domain=”www.hogehoge.com” />
</cross-domain-policy>
また、Flash Player 7以上での使用を前提しているのなれば、hogehoge.com以外のドメインを記述し、他ドメインのサーバからのアクセスも可能(ex. “barbar.com”, “*” )。