送信 URL アクセスの制御

Flash Player 9 以降、Adobe AIR 1.0 以降

送信スクリプトおよび(HTTP URL、mailto: などを介した)URL アクセスは、次の API を使用して行われます。

  • flash.system.fscommand() 関数

  • ExternalInterface.call() メソッド

  • flash.net.navigateToURL() 関数

ローカルファイルシステムからロードされるコンテンツの場合、コードとこれを含む Web ページ(存在する場合)が local-trusted または AIR アプリケーションのいずれかのセキュリティサンドボックス内に置かれている場合にのみ、上記のメソッドを正常に呼び出すことができます。上記のメソッドの呼び出しが失敗するのは、コンテンツが local-with-networking または local-with-filesystem のいずれかのサンドボックス内にある場合です。

ローカルでロードされていないコンテンツの場合、次に説明する AllowScriptAccess パラメーターの値に応じて、これらの API はすべてその API が埋め込まれている Web ページと通信できます。 flash.net.navigateToURL() 関数には、SWF ファイルが埋め込まれているページだけではなく、開いているブラウザーウィンドウまたはフレームと通信する追加機能があります。この機能について詳しくは、 navigateToURL() 関数の使用 を参照してください。

SWF ファイルをロードする HTML コード内の AllowScriptAccess パラメーターは、SWF ファイル内から送信 URL アクセスを実行する機能を制御します。このパラメーターは PARAM または EMBED タグの内部で設定します。 AllowScriptAccess に値を設定しない場合、SWF ファイルと HTML ページは、その両方が同じドメインにある場合にのみ通信できます。

AllowScriptAccess パラメーターには、3 つの値(「 always 」、「 sameDomain 」または「 never 」)のいずれかを設定できます。
  • AllowScriptAccess が「 always 」に設定されている場合、SWF ファイルと HTML ページのドメインが異なる場合でも、SWF ファイルは埋め込み先の HTML ページと通信できます。

  • AllowScriptAccess が「 sameDomain 」に設定されている場合、SWF ファイルと HTML ページのドメインが同じでないと、SWF ファイルは埋め込み先の HTML ページと通信できません。この値は、 AllowScriptAccess のデフォルト値です。この設定を使用した場合または AllowScriptAccess に値を設定しない場合、1 つのドメインでホストされる SWF ファイルは、別のドメインにある HTML ページのスクリプトにアクセスできなくなります。

  • AllowScriptAccess が「 never 」に設定されていると、SWF ファイルはどの HTML ページとも通信できません。Adobe Flash CS4 Professional のリリース以降、この値の使用は推奨されていません。自身のドメインの信頼されない SWF ファイルを処理しない場合は、この値の使用は推奨されず、通常は必要もありません。信頼されていない SWF ファイルを提供する必要がある場合は、区別するためのサブドメインを作成し、信頼されていないコンテンツはすべてそこに配置することをお勧めします。

別のドメインへの送信 URL アクセスを許可する HTML ページ内の AllowScriptAccess タグの設定例を次に示します。

<object id='MyMovie.swf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0' height='100%' width='100%'> 
<param name='AllowScriptAccess' value='always'/> 
<param name='src' value=''MyMovie.swf'/> 
<embed name='MyMovie.swf' pluginspage='http://www.adobe.com/go/getflashplayer' src='MyMovie.swf' height='100%' width='100%' AllowScriptAccess='never'/> 
</object> 

navigateToURL() 関数の使用

前述の allowScriptAccess パラメーターで指定するセキュリティ設定に加えて、 navigateToURL() 関数に 2 番目のオプションパラメーター target があります。 target パラメーターを使用して、URL 要求の送信先の HTML ウィンドウまたはフレームの名前を指定できます。そのような要求に追加のセキュリティ制限が適用されます。制限は、 navigateToURL() がスクリプトステートメントと非スクリプトステートメントのどちらとして使用されているかによって異なります。

navigateToURL("javascript: alert('Hello from Flash Player.')") などのスクリプトステートメントの場合、次のルールが適用されます。

  • SWF ファイルがローカルで信頼されているファイルの場合、要求は成功します。

  • SWF ファイルが埋め込まれている HTML ページがターゲットの場合、前述の allowScriptAccess ルールが適用されます。

  • SWF ファイルと同じドメインからロードされたコンテンツがターゲットに格納されている場合、要求は成功します。

  • SWF ファイルとは別のドメインからロードされたコンテンツがターゲットに格納されていて、前の 2 つの条件のいずれも適合しない場合、要求は失敗します。

HTTP、HTTPS、 mailto: などの非スクリプトステートメントの場合、次のすべての条件が満たされると要求は失敗します。

  • ターゲットが特殊キーワード(「 _top 」または「 _parent 」)の 1 つである。

  • 別のドメインでホストされる Web ページに SWF ファイルが含まれている。

  • always 」以外の値の allowScriptAccess と一緒に SWF ファイルが埋め込まれている。

詳細情報

送信 URL アクセスについて詳しくは、『 Adobe Flash Platform 用 ActionScript 3.0 リファレンスガイド 』の次の項目を参照してください。