共有オブジェクト

Flash Player 9 以降、Adobe AIR 1.0 以降

Flash Player では、共有オブジェクト(SWF ファイルの外部で存続する ActionScript オブジェクト)をユーザーのローカルファイルシステム上だけでなく、リモート RTMP サーバー上でも使用することができます。共有オブジェクトは、Flash Player 内のその他のメディアと同様に、いくつかのセキュリティサンドボックスに区分されます。 しかし、共有オブジェクトのサンドボックスモデルは、少し異なっています。なぜなら、共有オブジェクトはドメインの境界を越えてアクセスできるリソースではないからです。 共有オブジェクトは常に、SharedObject クラスのメソッドを呼び出す各 SWF ファイルのドメインに固有の共有オブジェクトストアから取得されます。 通常、共有オブジェクトストアは SWF ファイルのドメインよりもさらに細分化されています。デフォルトでは、それぞれの SWF ファイルごとに、その元の URL 全体に固有の共有オブジェクトストアが使用されます。共有オブジェクトについて詳しくは、共有オブジェクトを参照してください。

SWF ファイルは SharedObject.getLocal() および SharedObject.getRemote() メソッドの localPath パラメーターを使用して、その URL の一部分だけに関連付けられた共有オブジェクトストアを使用することができます。この方法により、SWF ファイルは、他の URL からの別の SWF ファイルとの共有を許可できます。 localPath パラメーターとして「/」を渡した場合でも、独自のドメインに固有の共有オブジェクトストアが指定されます。

Flash Player の設定ダイアログボックスまたは設定マネージャーを使用して、共有オブジェクトへのアクセスを制限できます。 デフォルトでは、ドメインごとに最大 100KB のデータサイズまでの共有オブジェクトを作成できます。 管理ユーザーおよび一般ユーザーは、ファイルシステムへの書き込み機能に制限を適用することもできます。 詳しくは、管理ユーザーのコントロールおよびユーザーのコントロールを参照してください。

共有オブジェクトがセキュアであることを指定するには、SharedObject.getLocal() メソッドまたは SharedObject.getRemote() メソッドの secure パラメーターに true を指定します。secure パラメーターについて、次の点に注意してください。

  • このパラメーターを true に設定すると、Flash Player は新しいセキュアな共有オブジェクトを作成するか、既存のセキュアな共有オブジェクトの参照を取得します。 このセキュアな共有オブジェクトに対する読み取りまたは書き込みは、HTTPS で配信された SWF ファイルによってのみ行えます。このとき SWF ファイルは SharedObject.getLocal() を、secure パラメーターを true に設定して呼び出します。

  • このパラメーターが false に設定された場合、Flash Player は共有オブジェクトを新しく作成するか、または HTTPS 以外の接続で配信された SWF ファイルにより読み込みまたは書き込みのできる既存の共有オブジェクトの参照を取得します。

呼び出し側の SWF ファイルが HTTPS URL からのものでない場合、SharedObject.getLocal() メソッドまたは SharedObject.getRemote() メソッドの secure パラメーターに true を指定すると、SecurityError 例外が発生します。

共有オブジェクトストアの選択は、SWF ファイルの元の URL に基づきます。このことは、SWF ファイルが単純な URL から提供されない 2 つの状況でも当てはまります。それらの状況は、読み込みロードとダイナミックロードです。 読み込みロードとは、LoaderContext.securityDomain プロパティを SecurityDomain.currentDomain に設定して SWF ファイルをロードする状況のことです。この状況では、ロードされた SWF ファイルは、ロードする側の SWF ファイルのドメインで始まり、その後に実際の元の URL を指定した疑似 URL を持ちます。ダイナミックロードとは、Loader.loadBytes() メソッドを使用して SWF ファイルをロードすることです。この状況では、ロードされた SWF ファイルは、ロードする側の SWF ファイルの完全な URL で始まり、その後に整数 ID が続く擬似 URL を持ちます。読み込みロードとダイナミックロードの両方で、LoaderInfo.url プロパティを使用して SWF ファイルの疑似 URL を検証できます。疑似 URL は、共有オブジェクトストアを選択する目的で実 URL とまったく同じように扱われます。 疑似 URL の一部または全部を使用する、共有オブジェクトの localPath パラメーターを指定できます。

ユーザーおよび管理者は、サードパーティー共有オブジェクトの使用を無効にすることもできます。この場合は、Web ブラウザー内で実行されているすべての SWF ファイルが共有オブジェクトを使用し、その SWF ファイルの元の URL は、ブラウザーのアドレスバーに表示される URL と異なるドメインに属しています。ユーザーと管理者は、プライバシーの理由から、クロスドメイントラッキングを避けるために、サードパーティー共有オブジェクトの使用を無効にすることもできます。 この制限を回避するために、共有オブジェクトを使用するすべての SWF ファイルが、ブラウザーのアドレスバーに表示されているのと同じドメインから SWF ファイルが提供される HTML ページ構造内でのみロードされるようにすることもできます。 サードパーティー SWF ファイルの共有オブジェクトを使用しようとして、サードパーティー共有オブジェクトの使用が無効の場合、SharedObject.getLocal() および SharedObject.getRemote() メソッドは null を返します。詳しくは、www.adobe.com/jp/products/flashplayer/articles/thirdpartylso を参照してください。