SWF ファイルはサーバーから ActionScript 内にデータをロードでき、ActionScript からサーバーにデータを送信できます。データのロードはメディアのロードとは異なる種類の操作です。なぜなら、ロードされた情報は、メディアとして表示されず、ActionScript 内で直接表示されるからです。一般に、SWF ファイルは、それ自体のドメインからデータをロードできます。しかし、他のドメインからデータをロードするためには、通常ではクロスドメインポリシーファイルが必要になります。
データは、XML ファイルまたはテキストファイルとしてロードできます。URLLoader クラスおよび URLStream クラスの load() メソッドは、クロスドメインポリシーファイルのアクセス許可によって管理されます。
load() メソッドを使用して、このメソッドを呼び出している SWF ファイルのドメイン以外のドメインからコンテンツをロードする場合、Flash Player はロードされるアセットのサーバー上にクロスドメインポリシーファイルがあるかどうかをチェックします。クロスドメインポリシーファイルが存在し、そのファイルでロードする側の SWF ファイルのドメインにアクセスが許可されている場合は、データをロードできます。
デフォルトでは、ソケットおよび XML ソケット接続へのクロスドメインアクセスは無効になっています。また、SWF ファイルと同じドメインの番号が 1024 未満のポート上のソケット接続へのアクセスも、デフォルトによって無効になります。これらのポートへのアクセスを許可するには、次のいずれかの場所からクロスドメインポリシーファイルを提供します。
メインソケット接続と同じポート、または別のポートからクロスドメインポリシーファイルを提供する場合、次の例に示すように、クロスドメインポリシーファイル内で to-ports 属性を使用して許可されるポートを列挙します。
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <!-- Policy file for xmlsocket://socks.mysite.com --> <cross-domain-policy> <allow-access-from domain="*" to-ports="507" /> <allow-access-from domain="*.example.com" to-ports="507,516" /> <allow-access-from domain="*.example.org" to-ports="516-523" /> <allow-access-from domain="adobe.com" to-ports="507,516-523" /> <allow-access-from domain="192.0.34.166" to-ports="*" /> </cross-domain-policy>
メインソケット接続と同じポートからソケットポリシーファイルを取得するには、単に Socket.connect() メソッドまたは XMLSocket.connect() メソッドを呼び出します。指定されたドメインが呼び出し元の SWF ファイルのドメインと異なる場合、Flash Player では、試行中のメイン接続と同じポートからのポリシーファイルの取得が自動的に試行されます。メイン接続と同じサーバー上で別のポートからソケットポリシーファイルを取得するには、次のように特殊な "xmlsocket" シンタックスを使用して、Security.loadPolicyFile() メソッドを呼び出します。
Security.loadPolicyFile("xmlsocket://server.com:2525");
Socket.connect() メソッドまたは XMLSocket.connect() メソッドを呼び出す前に、Security.loadPolicyFile() メソッドを呼び出してください。その場合、Flash Player は、ユーザーのメイン接続を許可するかどうかを決める前に、ユーザーのポリシーファイル要求が満たされるのを待ちます。
ソケットサーバーを実装し、ソケットポリシーファイルを提供する必要がある場合は、ポリシーファイルを提供するのに、メイン接続を受け入れるのと同じポートを使用するか、それとも別のポートを使用するかを決めてください。いずれの場合も、サーバーは、クライアントからの最初の送信を待ってから、ポリシーファイルを送信するか、メイン接続を設定するかを決定する必要があります。Flash Player は、ポリシーファイルを要求する場合、接続が確立されると同時に、必ず次のストリングを送信します。
<policy-file-request/>
ストリングを受信したサーバーは、ポリシーファイルを転送できるようになります。同じ接続をポリシーファイル要求とメイン接続の両方に再使用しないでください。ポリシーファイルの送信後は、接続を閉じてください。そのようにしなかった場合、Flash Player はポリシーファイル接続を閉じてから、再接続してメイン接続を設定します。
詳細については、ソケットポリシーファイルを参照してください。
データ送信が行われるのは、SWF ファイルの ActionScript コードによりサーバーまたはリソースにデータが送信されるときです。データの送信は、ネットワークドメイン SWF ファイルで常に実行できます。ローカル SWF ファイルは、その SWF ファイルが local-trusted サンドボックスまたは local-with-networking サンドボックスに入っている場合にのみ、ネットワークアドレスにデータを送信できます。詳細については、ローカルサンドボックスを参照してください。
flash.net.sendToURL() 関数を使用すると、URL にデータを送信できます。それ以外のメソッドも、URL に要求を送信します。それらのメソッドとしては、Loader.load() や Sound.load() などのロードメソッドと、URLLoader.load() や URLStream.load() などのデータロードメソッドがあります。
FileReference.upload() メソッドは、ユーザーによって選択されたファイルのリモートサーバーへのアップロードを開始します。FileReference.upload() メソッドを呼び出す前に、FileReference.browse() メソッドまたは FileReferenceList.browse() メソッドを呼び出す必要があります。
FileReference.download() メソッドを呼び出すと、ユーザーがリモートサーバーからファイルをダウンロードできるダイアログボックスが開きます。
呼び出しを行う SWF ファイルが local-with-filesystem サンドボックス内にある場合、アップロードとダウンロードは許可されません。
デフォルトでは、SWF ファイルは、それ自体のサーバー以外のサーバーとの間でアップロードまたはダウンロードを行うことはできません。SWF ファイルが別のサーバーとの間でアップロードまたはダウンロードできるのは、そのサーバーがクロスドメインポリシーファイルを提供し、呼び出し側 SWF ファイルのドメインに許可を付与した場合です。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート