Flash Lite 2.x および 3.0 ヘルプ

loadPolicyFile (security.loadPolicyFile メソッド)

public static loadPolicyFile(url:String) : Void

url パラメータで指定された場所からクロスドメインポリシーファイルをロードします。Flash Player では、Flash ムービーが置かれているサーバー以外のサーバーからデータをロードすることを許可する許可メカニズムとして、ポリシーファイルが使用されます。

Flash Player 7.0.14.0 では、ポリシーファイルの検索が行われるのはデータロード要求が行われたサーバーの /crossdomain.xml に限られます。XMLSocket 接続試行の場合、XMLSocket 接続の試行が行われたサブドメインのポート 80 上にある HTTP サーバーで、/crossdomain.xml に検索が行われます。さらに Flash Player 7.0.14.0 (およびそれ以前のバージョン) では、XMLSocket 接続がポート 1024 以上に限られています。

System.security.loadPolicyFile() を追加することで、Flash Player 7.0.19.0 では任意の場所からポリシーファイルをロードできるようになります。次に例を示します。

 System.security.loadPolicyFile("http://foo.com/sub/dir/pf.xml");

これにより、Flash Player は指定された URL からポリシーファイルを取得できるようになります。この場所に置かれているポリシーファイルによって得られる許可は、サーバーの仮想ディレクトリ階層で同レベル以下のコンテンツすべてに適用されます。次に示すコードは、前の例の続きです。

 loadVariables("http://foo.com/sub/dir/vars.txt") // 許可
 loadVariables("http://foo.com/sub/dir/deep/vars2.txt") // 許可
 loadVariables("http://foo.com/elsewhere/vars3.txt") // 未許可

loadPolicyFile() を使用して、任意の数のポリシーファイルをロードできます。ポリシーファイルを必要とする要求がある場合、Flash Player はポリシーファイルのダウンロードがすべて完了するまで必ず待機します。その間に要求が拒否されることはありません。loadPolicyFile() で指定されたポリシーファイルによって要求が許可されなかった場合は、最終的にデフォルトの場所である /crossdomain.xml が参照されます。

特定のポート番号で xmlsocket プロトコルを使用することで、XMLSocket サーバーから直接ポリシーファイルを取得することができます。次に例を示します。

 System.security.loadPolicyFile("xmlsocket://foo.com:414");

このコードを使用すると、Flash Player は指定されたホストとポートからポリシーファイルを取得しようとします。1024 以上のポートだけでなく、任意のポートを使用できます。指定されたポートを使用して接続が確立されると、Flash Player は null バイトで終了する <policy-file-request /> を送信します。XMLSocket サーバーを設定することで、ポリシーファイルと通常の XMLSocket 接続に同じポートを使用することができます。この場合、サーバーは <policy-file-request /> が受信されるまで待機し、その後でポリシーファイルを送信する必要があります。標準の接続とは異なるポートを使用して、ポリシーファイルを提供するようにサーバーを設定することもできます。この場合は、ポリシーファイル専用のポートで接続が確立されるとすぐにポリシーファイルを送信できます。ポリシーファイルを終了するためにはサーバーから null バイトを送信し、それ以降の接続を閉じる必要があります。サーバー側で接続を閉じなければ、最後の null バイトが受信されるとすぐに Flash Player 側で接続が閉じられます。

XMLSocket サーバーで提供するポリシーファイルのシンタックスは、他のポリシーファイルとほぼ同じですが、アクセスを許可するポートも指定する必要がある点が異なります。ポリシーファイルが 1024 未満のポートから提供される場合、任意のポートへのアクセスが許可されます。ポリシーファイルが 1024 以上のポートから提供される場合、他の 1024 以上のポートにのみアクセスを許可できます。許可するポートは、<allow-access-from> タグの "to-ports" 属性で指定します。単一のポート番号、ポート範囲、ワイルドカードを使用できます。次に、XMLSocket ポリシーファイルの例を示します。

 <cross-domain-policy>
 <allow-access-from domain="*" to-ports="507" />
 <allow-access-from domain="*.foo.com" to-ports="507,516" />
 <allow-access-from domain="*.bar.com" to-ports="516-523" />
 <allow-access-from domain="www.foo.com" to-ports="507,516-523" />
 <allow-access-from domain="www.bar.com" to-ports="*" />
 </cross-domain-policy>

元のデフォルトの場所、つまり HTTP サーバーのポート 80 の /crossdomain.xml から取得されたポリシーファイルでは、1024 以上の全ポートへのアクセスが暗黙的に許可されています。HTTP サーバーの他の場所から、XMLSocket 操作を許可するポリシーファイルを取得することはできません。XMLSocket ポリシーファイルを独自の場所に置く場合、XMLSocket サーバー上に置く必要があります。

1024 未満のポートに接続する機能は新しいため、ムービークリップが自分自身のサブドメインに接続する場合でも、loadPolicyFile() によってロードするポリシーファイルを使用して常にこの接続の許可を行う必要があります。

パラメータ

url:String - ロードするクロスドメインポリシーファイルが置かれている URL を表すストリング。

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート