LocalConnection オブジェクトは、同一インスタンスの Macromedia Flash Player ではない場合でも、2つの Macromedia Flash ムービー間のローカル上でのやりとりを可能にします (例:別々のブラウザウィンドウにて実行されている Macromedia Flash Player 間のローカル接続)。 LocalConnection オブジェクトは、Macromedia Flash Player 6 から実装されています。
ムービーから LocalConnection.send が呼び出されると、LocalConnection オブジェクトを介したプロシージャコールが発生します。プロシージャコールを受け取る相手がチャンネル内に検出されると Macromedia Flash Player は、呼び出し元ムービーの配信元ドメインと、呼び出し先ムービーの配信元ドメインとが一致するかを検証します。これらのドメインの一致が確認されると、所定の処理が始まります。
また、LocalConnection.domain の呼び出しは、呼び出し元ムービー自身のドメインを確認するために使用されることもあります。
Macromedia Flash Player 7 では、LocalConnection の呼び出し元と呼び出し先双方の配信元ドメインが完全に一致しなければ、ローカル接続を許可しません。また、HTTP プロトコルから配信されたムービーは、HTTPS 配信のムービーに対してローカル接続することはできません (ただし、この反対の HTTPS ムービーから HTTP ムービーへのローカル接続は可能)。
この新しい制約は、呼び出し元、呼び出し先のどちらかのムービーが Macromedia Flash Player 7 以降用に作成されている場合に適用されます。双方のムービーが Macromedia Flash Player 6 以前用に作成されている場合は、たとえムービーの再生に Macromedia Flash Player 7 を使用していても以前のセキュリティ制約が適用されます。以前の制約では、サブドメイン名を除いたスーバードメイン名をドメイン一致の判定基準とし、HTTP ムービーからの HTTPS ムービーに対するローカル接続も可能です。
Macromedia Flash Player 7 を使用して Macromedia Flash Player 6 用ムービーの LocalConnection.domain メソッドを呼び出した場合、戻り値にはムービーのスーパードメインが返されます。一方、Macromedia Flash Player 7 用ムービーが LocalConnection.domain メソッドを呼び出した場合、戻り値には、完全なドメインが返されます。
なお、チャンネル名に使用するドメインに関しては、Macromedia Flash Player 7 以降用に作成したムービーであっても従来どおりのスーパードメインを使用します。チャンネル名とは、送信側のムービーと受信先ムービーとの間に確立された接続の名前です。送信側のムービーからアンダースコア (_) で始まるチャンネル名を引数とした LocalConnection.connect メソッドが呼び出されると、Macromedia Flash Player は、ドメインを問わずチャンネル名をそのまま使用します。一方、アンダースコア (_) から始まらないチャンネル名の場合、チャンネル名の始めには自動的にドメイン名が追加されます。仮に www.mysite.com の受信側ムービーがつぎのメソッドを呼び出したとします。
receiving_lc.connect( "myChannel" );
この際のチャンネル名は、自動的に mysite.com:myChannel になります。また、www.mysite.com または、store.mysite.com の送信側ムービーがつぎのメソッドを呼び出した場合、
sending_lc.send( "myChannel", "methodName" );
Macromedia Flash Player は、チャンネル名に mysite.com:myChannel を使用して、受信側の connect() メソッドに応答します。チャンネル名にドメイン名を付け加える必要があるのは、受信側ムービーと送信側ムービーのスパードメインが一致しないケースのみです。このようなケースでは、送信側ムービーのメソッドには、ドメイン名とチャンネル名の両方が明示的に指定されている必要があります。したがって、www.anothersite.com にあるムービーから、上記の受信側メソッドに対応するメソッドを送るには、つぎのメソッドを呼び出します。
sending_lc.send( "mysite.com:myChannel", "methodName" );
この場合のメソッドには、受信側ムービーの完全なドメインではなく、サブドメイン名を除いたスーパードメインを使用することに注意してください。
異なるドメインから配信されたムービーを LocalConnection オブジェクトを使用してローカル接続するには、ドメイン間をまたぐムービーのローカル接続に関するパーミッションを設定します。このパーミッション設定には、受信側ムービーの allowDomain イベントハンドラを使用します。LocalConnection.allowDomain イベントハンドラは、Macromedia Flash Player 6 から導入されていましたが、Flash Player 7 では、新たなセキュリティ制約が適用されます。
仮に http://www.mysite.com/controller.swf のムービーから http://utility.flashutils.com/helper.swf のムービーにローカル接続したいとします。この場合、受信側の helper.swf ムービーにつぎの ActionScript を記述します。
receiving_lc.allowDomain = function ( domain )
{
if ( domain == "www.mysite.com" || domain == this.domain() )
{
return true;
}
else
{
return false;
}
};
ここでは、コード内の接続相手指定に www.mysite.com というように完全なドメインが使用されていることに注意してください。Macromedia Flash Player 6 の allowDomain ハンドラ実装時は、この部分にサブドメイン名を除いたスーパードメインが使用されていました。ただし、Macromedia Flash Player 7 では、Macromedia Flash Player 6 との後方互換を保つため、送信側ムービー、受信側ムービーの両方が Macromedia Flash Player 6 用に作成されている場合に限り、LocalConnection.allowDomain の引数に送信側ムービーのスーパードメインを使用します。
receiving_lc.allowDomain = function ( domain )
{
if ( domain == "mysite.com" || domain == this.domain() )
{
return true;
}
else
{
return false;
}
};
ローカル接続の受信側ムービーが Macromedia Flash Player 6 用の場合、たとえ受信側が HTTPS ムービー、送信側が HTTP ムービーの組み合わせであったとしても、すべての LocalConnection 要求に対して allowDomain ハンドラを使用することができます。一方、Macromedia Flash Player 7 以降用の HTTPS ムービーを受信側に使用して HTTP ムービーを送信側に使用する場合は、受信側ムービーに新しいハンドラ LocalConnection.allowInsecureDomain を使用します。これは、先述の System.security.allowInsecureDomain を記述するのと同じ仕組みです (詳細は「ムービー間スクリプティングのパーミッション定義」を参照)。
つぎに例を示します。
receiving_lc.allowInsecureDomain = function ( domain )
{
if ( domain == "mysite.com" || domain == this.domain() )
{
return true;
}
else
{
return false;
}
};
ただし、LocalConnection.allowInsecureDomain の使用は、HTTPS 保護をうけないムービーから HTTPS で保護されているムービーに対するアクセスを許可すことになるので、マクロメディアは、このような設定をお勧めしません。HTTPS で保護されたムービーに対するアクセスが必要な場合、参照元、参照先の両方の Flash ムービーをHTTPS で保護することをお勧めします。しかし、すべてのムービーを HTTPS から配信することが経済的な理由などから非現実的な場合は、LocalConnection.allowInsecureDomain メソッドを利用することによって、マクロメディアが推奨する Macromedia Flash Player のセキュリティデフォルト設定を上書きすることが可能です。