Flash Player 10.1 と AIR 2 から、セキュリティ関連の新しい機能が追加されました。他のドメインから読み込むファイルの種類を制限できる機能です。
セキュリティドメイン
新機能の前に、セキュリティドメインについて確認です。
セキュリティドメインは、Flash Player に読み込んだ SWF ファイルを管理するための機能です。同じセキュリティドメイン内のリソースには自由にアクセスできますが、他のセキュリティドメイン内のリソースには (通常) 勝手にアクセスできないようになっています。
基本的には、SWF ファイルの置かれているサーバーのドメインごとに、セキュリティドメインが作られます。例えば、最初に読み込まれた SWF ファイルと、その SWF ファイルが読み込んだ SWF ファイルが、それぞれ別のサーバーから読み込まれた場合、2 つのセキュリティドメインがつくられます。そして、2 つの SWF ファイルは、それぞれ対応するセキュリティドメイン内に置かれます。
"基本的に" と書いたのは、外部ドメインのファイルを、ファイルを要求した SWF のセキュリティドメインに読み込む手段があるからです。以下の 2 つの API が提供されています。
1 つ目は、LoaderContext.securityDomain 属性に、読み込む側のセキュリティドメインである SecurityDomain.currentDomain を設定してから Loader.load() メソッドを呼ぶ、というものです。これで、外部ドメインのファイルでも、load() を呼んだ SWF と同じセキュリティドメインに読み込まれます。下はそのサンプルです。
var ld:Loader = new Loader(); var lc:LoaderContext = new LoaderContext(); // 読み込む側のセキュリティドメインを指定 lc.securityDomain = SecurityDomain.currentDomain; // 第2引数にLoaderContextを指定 ld.load(new URLRequest("http://not.my.domain.jp/foo.swf"), lc);