ムービー間をまたぐスクリプティングは、Flash ムービーが MovieClipLoader.LoadClip、loadMovie、loadMovieNum を利用して他の Flash ムービーをロードして、一方のムービーが ActionScript を利用して他方のムービー内の変数や、関数、またはメソッドを呼び出すときに発生します。ムービー間をまたぐスクリプティングは、ムービー同士が同じドメインから配信された場合に限り実行するようデフォルトでは設定されています。ムービーは、任意の場所から配信されるムービーをロードすることが可能ですが、ムービー間のスクリプト制御や通信に関しては、セキュリティの制約が適用されます。
ムービー間をまたぐスクリプティングは、HTML ページが JavaScript (またはその他のスクリプト言語) を利用して Macromedia Flash ムービーを操作する場合にも発生します。(例:SetVariable、GetVariable の呼び出し) Macromedia Flash Player は、スクリプトが記述された HTML ページが Macromedia Flash ムービーと同じドメインから配信された場合のみ、このスクリプト操作を実行します。
Macromedia Flash Player 7 では、ムービー同士が完全にマッチするドメインからのものである場合に限り、ムービー間のスクリプト制御を許可します。また、安全性が保証されていない HTTP プロトコルなどを利用して配信されたムービーからは、HTTPS 配信のムービーをスクリプト制御できません。(HTTPS ムービーが HTTP ムービーをスクリプト制御することは可能) このセキュリティ制約は、HTML ページが Macromedia Flash ムービーをスクリプト制御する場合にも同じように適用されます。
この新しい制約は、片方、または両方のムービーが Macromedia Flash Player 7 用に作成されている場合に適用されます。両方のムービーが Macromedia Flash Player 6 以前用に作成されている場合、Macromedia Flash Player 7 は、以前のセキュリティ制約を適用します。以前のセキュリティ制約では、サブドメイン名を除いたスーパードメインが一致するムービー同士のスクリプト制御、および HTTP ムービーからの HTTPS ムービー制御が許可されています。
ロード元、ロード対象のムービーが別々のドメインから配信されている場合、Macromedia Flash Player は、これらのムービーの ActionScript グローバルオブジェクトをそれぞれ固有のものとして扱います。通常グローバルオブジェクトは、暗示的に参照されています。例えば、Macromedia Flash Player の標準ライブラリ内にある MovieClip、Array などは、グローバルオブジェクトの一部です。また、グローバルオブジェクトには、_global プロパティを使用して参照されるグローバル変数が存在します。これらのグローバル変数は、Macromedia Flash Player 6 からムービー固有のグローバル変数として扱われていました。Macromedia Flash Player 7 からは、グローバル変数にもあらたなセキュリティ制約が適用され、Macromedia Flash Player 6 以前用のムービーと Macromedia Flash Player 7 用のムービーでは、たとえこれらが同一ドメインおよび同一プロトコルから配信されていたとしても、グローバル変数を共有できません。Macromedia Flash Player 6 用、7 用のムービーが混在するサイトでは、特に注意が必要になります。
別々のドメインから配信されるムービー間をまたぐスクリプティングを使用する場合は、ActionScript の System.security.allowDomain メソッドを使用してムービー間スクリプティングのパーミッションを設定します。このメソッドは、Macromedia Flash Player 6 から導入されていましたが、Flash Player 7 では、新たなセキュリティ制約が適用されます。
例えば、http://www.mysite.com/controller.swf のムービーから http://utility.flashutils.com/helper.swf に定義されたメソッドを呼び出す場合、Macromedia Flash Player 7 は、つぎの ActionScript が helper.swf に記述されている場合に限り、このメソッドを実行します。
System.security.allowDomain( "www.mysite.com" );
System.security.allowDomain メソッドを呼び出すことによる動作の影響は、必ず把握するようにしてください。上記の ActionScript を記述することによって、utility.flashutils.com ドメインから配信されるすべてのムービーから www.mysite.com ドメインのすべてのムービーをスクリプト制御することができるようになります。
Macromedia Flash Player 6 用ムービーが System.security.allowDomain メソッドを参照し、参照先の Flash Player 6 以前用ムービーが参照元のムービーをスクリプト制御する場合、System.security.allowDomain の同一ドメイン判定基準には、サブドメインを除いたスーパードメインが使用されます。したがって、上記の ActionScript 例の場合、mysite.com の付くドメイン名 (例:www.mysite.com、store.mysite.com など) を参照元にしたムービーからは、flashutils.com の付くドメイン名 (例:utility.flashutils.com、www.flashutils.com など) を持つすべてのムービーをスクリプト制御できます。しかし、参照先、参照元のいずれかが Macromedia Flash Player 7 用に作成されている場合、System.security.allowDomain が使用する同一ドメイン判定基準には、サブドメインを含めたフルドメイン名が使用されます。よって、先述の ActionScript においては、www.mysite.com のすべてのムービーに対する utility.flashutils.com ドメインムービーからのアクセスのみが許可されます。
また、Macromedia Flash Player 6 用ムービーの System.security.allowDomain メソッドは、参照元ムービーのバージョンや HTTP / HTTPS の違いを問わず、HTTPS ムービーへのアクセスを許可します。したがって、先述の ActionScript の場合、www.mysite.com から配信される Macromedia Flash Player 7 ムービーは、utility.flashutils.com ドメインの HTTPS ムービーをスクリプト制御できます。
これに対して、Macromedia Flash Player 7 以降用のムービーから呼び出す System.security.allowDomain メソッドでは、HTTP ムービーが呼び出した HTTPS ムービーのスクリプト制御は許可されません。Macromedia Flash Player 7 用 HTTP ムービーから HTTPS ムービーを呼び出す場合には、あらたに追加された System.security.allowInsecureDomain メソッドを呼び出す必要があります。仮に http://www.mysite.com/controller.swf から配信されるムービーに https://secure.mysite.com/creditcard.swf のムービーをロードして、Macromedia Flash Player 7 から creditcard.swf 内のメソッドを呼び出すには、creditcard.swf ファイル内につぎのActionScript を記述します。
System.security.allowInsecureDomain( "www.mysite.com" );
ただし、この設定は、HTTPS で保護されているムービーとHTTPS 保護をうけないムービーとの間にスクリプト制御を許可すことになるので、マクロメディアは、このような設定をお勧めしません。HTTPS で保護されたムービーのスクリプト制御が必要な場合は、参照元、参照先の両方の Flash ムービーをHTTPS で保護することをお勧めします。しかし、すべてのムービーを HTTPS から配信することが経済的な理由などから非現実的な場合は、System.security.allowInsecureDomain メソッドを利用することによって、マクロメディアが推奨する Macromedia Flash Player のセキュリティデフォルト設定を上書きすることが可能です。