別ドメインにある画像やxmlを読み込んで処理するswfコンテンツの制作中。ポリシーファイルが必要なのはわかっていたので、画像やxmlの置いてあるサーバー(http://www.sample.server/)のルートに下記のcrossdomain.xmlを設置。
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" secure="true" />
</cross-domain-policy>
でもって、swfの方から上記サーバーのrss(http://www.sample.server/rss.php)を読み込んだ所、問題ナシ!
続けて、JPEGファイルを読み込み、BitmapData.draw()で描画しようと思った所:
セキュリティサンドボックス侵害 : BitmapData.draw:http://www.tonpoo.com/hogehoge/foobar.swf は http://www.sample.server/images/photo.jpg にアクセスできません。ポリシーファイルが必要ですが、このメディアがロードされたとき、checkPolicyFile フラグが設定されませんでした。
あれえええええ?
おかしいなと思って調べてみたら、出てきた:
AS で別ドメインの画像を読み込むときの注意点 – てっく煮ブログ
クロスドメインポリシーファイルは設置してるけどなあ、と思いながら読んでいると下記の記述:
これ以外に、Security.loadPolicyFile() メソッドを使って、事前に読み込んでおく方法もある。
これだこれだ!というわけで早速リファレンスを参照。
Security – ActionScript 3.0 コンポーネントリファレンスガイド
でもって下記の記述を追加(www付きの場合とナシの場合と両方対応するように両方を併記)。
Security.loadPolicyFile("http://sample.server/crossdomain.xml");
Security.loadPolicyFile("http://www.sample.server/crossdomain.xml");
そしたら無事解決!
crossdomain.xmlを用意しただけで安心してちゃいかんですね・・