Flash CS3 ドキュメンテーション |
|||
| ActionScript 3.0 のプログラミング > Flash Player セキュリティ > データのロード | |||
SWF ファイルはサーバーから ActionScript 内にデータをロードでき、ActionScript からサーバーにデータを送信できます。データのロードはメディアのロードとは異なる種類の操作です。なぜなら、ロードされた情報は、メディアとして表示されず、ActionScript 内で直接表示されるからです。一般に、SWF ファイルは、それ自体のドメインからデータをロードできます。しかし、他のドメインからデータをロードするためには、通常ではクロスドメインポリシーファイルが必要になります。
データは、XML ファイルまたはテキストファイルとしてロードできます。URLLoader クラスと URLStream クラスの load() メソッドは、クロスドメインポリシーファイルの許可により制御されます。
load() メソッドを使用して、このメソッドを呼び出している SWF ファイルのドメイン以外のドメインからコンテンツをロードする場合、Flash Player はロードされるアセットのサーバー上にクロスドメインポリシーファイルがあるかどうかをチェックします。クロスドメインポリシーファイルが存在し、そのファイルでロードする側の SWF ファイルのドメインにアクセスが許可されている場合は、データをロードできます。
デフォルトでは、ソケットおよび XML ソケット接続へのクロスドメインアクセスは無効になっています。また 1024 未満のポートでは、SWF ファイルと同じドメインでのソケット接続へのアクセスは、デフォルトで無効に設定されています。これらのポートへのアクセスは、次の場所のいずれかに所属するクロスドメインポリシーファイルを使用することで許可できます。
メインソケット接続と同じポート、または別のポートからクロスドメインポリシーファイルを提供する場合、次の例に示すように、クロスドメインポリシーファイル内で to-ports 属性を使用して許可されるポートを列挙します。
<?xml version="1.0"?> <!DOCTYPE cross-domain-policy
SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> <!-- 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 ファイルのドメインと異なる場合、取得を試みているメイン接続と同じポートからのポリシーファイルの取得が自動的に試みられます。メイン接続と同じサーバー上で別のポートからソケットポリシーファイルを取得するには、次のように特殊な "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() メソッドを呼び出すと、ユーザーがリモートサーバーからファイルをダウンロードできるダイアログボックスが開きます。
|
メモ |
|
サーバーでユーザー認証が必要な場合、ブラウザ内で実行される、つまり、ブラウザプラグインまたは ActiveX コントロールを使用する SWF ファイルでのみ、認証用のユーザー名とパスワードをユーザーが入力できるダイアログボックスを表示できます。ただし、それはダウンロードの場合のみです。Flash Player では、ユーザー認証が必要なサーバーへのアップロードはできません。 |
呼び出しを行う SWF ファイルが local-with-filesystem サンドボックス内にある場合、アップロードとダウンロードは許可されません。
デフォルトでは、SWF ファイルは、それ自体のサーバー以外のサーバーとの間でアップロードまたはダウンロードを行うことはできません。SWF ファイルは、別のサーバーへのアップロードまたはダウンロードが可能ですが、そのサーバーに、呼び出し側 SWF ファイルのドメインに許可を与えるクロスドメインポリシーファイルが格納されている必要があります。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000356.html