flash.net パッケージには、新しいブラウザウィンドウを開く、URL 要求をサーバーに送信する、クラスエイリアスを扱うなどの操作を行うためのパッケージレベルの関数が含まれます。
パブリックメソッド
 関数定義元
  
registerClassAlias() メソッドの呼び出しを介して以前にエイリアスを登録したクラスを検索します。
flash.net
  
navigateToURL(request:URLRequest, window:String = null):void
Flash Player のコンテナを含むアプリケーション (通常はブラウザ) でウィンドウを開くか、置き換えます。
flash.net
  
registerClassAlias(aliasName:String, classObject:Class):void
AMF(Action Message Format)でオブジェクトがエンコードされるとき、オブジェクトのクラス(タイプ)を維持します。
flash.net
  
URL リクエストをサーバーに送信しますが、応答は無視します。
flash.net
関数の詳細
getClassByAlias()関数
public function getClassByAlias(aliasName:String):Class

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

既に registerClassAlias() メソッドの呼び出しによってエイリアスが登録されているクラスを検索します。

このメソッドは flash.utils.getDefinitionByName() メソッドとやり取りを行いません。

パラメータ

aliasName:String — 検索するエイリアスです。

戻り値
Class — 指定されたエイリアスに関連付けられたクラスです。見つからない場合は、例外がスローされます。

例外
ReferenceError — エイリアスが登録されていません。

関連項目

navigateToURL()関数 
public function navigateToURL(request:URLRequest, window:String = null):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

Flash Player のコンテナを含むアプリケーション (通常はブラウザ) でウィンドウを開くか、置き換えます。Adobe AIR では、関数によってデフォルトシステム Web ブラウザで URL が開かれます。

セキュリティ上の重要な注意事項

開発者は、FlashVars などの外部ソースから取得した URL 値を navigateToURL() 関数に渡すことがよくあります。攻撃者は、このような外部ソースを操作して、クロスサイトスクリプトのような攻撃の実行を試みます。したがって、開発者は、この関数に渡す前にすべての URL を検証する必要があります。

URL の適切なデータ検証は、アプリケーション全体での URL の使用方法により、異なることを意味する場合があります。最も一般的なデータ検証方法の 1 つは、URL が正しいスキームであることを確認する方法です。例えば、誤って javascript: のような URL を許可すると、クロスサイトスクリプト攻撃を受ける可能性があります。URL が自分のドメイン内のものであることを検証することで、フィッシング攻撃によって SWF ファイルがオープンリダイレクタとして使用できないことを確認できます。さらにセキュリティを強化するには、URL のパスを検証し、URL が RFC のガイドラインに準拠していることを確認することもできます。

例えば、次に示す簡単なコードの例では、データの検証として、http:// または https:// で始まっていない URL を拒否し、URL が自分のドメイン名に含まれることを確認しています。Web アプリケーションによってはこの例が適していない場合があるので、URL に対して他の検査が必要かどうかを検討する必要があります。

     // AS3 Regular expression pattern match for URLs that start with http:// and https:// plus your domain name.
     function checkProtocol (flashVarURL:String):Boolean {
        // Get the domain name for the SWF if it is not known at compile time.
        // If the domain is known at compile time, then the following two lines can be replaced with a hard coded string.
        var my_lc:LocalConnection = new LocalConnection();
        var domainName:String = my_lc.domain;
        // Build the RegEx to test the URL.
        // This RegEx assumes that there is at least one "/" after the
        // domain. http://www.mysite.com will not match.
        var pattern:RegExp = new RegExp("^http[s]?\:\\/\\/([^\\/]+)\\/");
        var result:Object = pattern.exec(flashVarURL);
        if (result == null || result[1] != domainName || flashVarURL.length >= 4096) {
          return (false);
        }
        return (true);
     }  
     
      

ブラウザ内で実行されるローカルコンテンツの場合、navigateToURL() メソッドを呼び出すときに "javascript:" 擬似プロトコルを(最初のパラメータとして渡される URLRequest オブジェクトを介して)指定できるのは、SWF ファイルとそれが含まれる Web ページ(存在する場合)が、信頼できるローカルのセキュリティサンドボックス内にある場合のみです。一部のブラウザでは、navigateToURL() メソッドとの javascript プロトコルの使用はサポートしていません。代わりに、call() メソッド(ExternalInterface API)を使用し、JavaScript メソッドを取り込んでいる HTML ページ内で呼び出すことを検討してください。

Flash Player、および Adobe AIR のアプリケーションサンドボックス以外では、一般的な予約ポートに接続することはできません。ブロックされている全ポートの一覧については、『ActionScript 3.0 のプログラミング』のセキュリティに関する章の「ネットワーク API の制限」を参照してください。

ブラウザで実行される Flash Player 10 以降では、このメソッドをプログラムで使用してポップアップウィンドウを開く方法は有効でない場合があります。ブラウザ(およびブラウザの設定)によってはポップアップウィンドウがブロックされる場合があり、すべてのポップアップウィンドウが表示される保証はありません。ただし、ユーザー操作の直接の結果として実行されるコード(マウスのクリックやキー入力イベントのイベントハンドラなど)に限っては、このクラスを使用してポップアップウィンドウを開く方法が有効です。

Flash Player 10 以降では、"multipart/form-data" などのマルチパート Content-Type にアップロードが含まれていると(アップロードが含まれているかどうかは POST ボディ内の "content-disposition" ヘッダーの "filename" パラメータで示されます)、そのアップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

また、すべてのマルチパート Content-Type では、RFC2046 標準に準拠した有効なシンタックスを使用する必要があります。シンタックスが有効でない場合は、アップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

セキュリティ情報について詳しくは、以下を参照してください。

パラメータ

request:URLRequest — 移動先の URL を指定する URLRequest オブジェクトです。

Adobe AIR で実行中のコンテンツの場合、navigateToURL() 関数を使用すると、ランタイムでは、POST メソッドを使用する URLRequest(method プロパティが URLRequestMethod.POST に設定されているもの)は、GET メソッドとして処理されます。

 
window:String (default = null)request パラメータで指定されたドキュメントを表示するブラウザウィンドウまたは HTML フレームです。特定のウィンドウの名前を入力するか、次の値のいずれかを使用します。
  • "_self" - 現在のウィンドウ内の現在のフレームを指定します。
  • "_blank"は、新規ウィンドウを指定します。
  • "_parent"は、現在のフレームの親を指定します。
  • "_top"は、現在のウィンドウ内の最上位のフレームを指定します。

このパラメータに値を指定しない場合は、新しい空のウィンドウが作成されます。スタンドアローンプレーヤーでは、新しい ("_blank") ウィンドウまたは名前付きのウィンドウのいずれかを指定できます。その他の値は適用されません。

メモ:ローカルファイルシステムのサンドボックスで実行される SWF ファイル内のコードが navigateToURL() 関数を呼び出して window パラメータにカスタムウィンドウ名を指定すると、そのウィンドウ名はランダム名に受け継がれます。名前の形式は "_flashXXXXXXXX" です。各 X はランダムな 16 進数を表します。同じセッション内で(含まれるブラウザウィンドウを閉じるまでに)再度この関数を呼び出して window パラメータに同じ名前を指定した場合は、同じランダムストリングが使用されます。


例外
IOError digest プロパティ(request オブジェクトのプロパティ)は null ではありません。URLRequest オブジェクトの digest プロパティを設定できるのは、URLLoader.load() メソッドを呼び出して SWZ ファイル(Adobe プラットフォームコンポーネント)を読み込む場合のみです。
 
SecurityError — Flash Player(および Adobe AIR のアプリケーションサンドボックスコンテンツ以外)では、このエラーは次の条件でスローされます。
  • 信頼されていないローカル SWF はインターネットへの接続を許可されません。この問題は、この SWF ファイルを local-with-networking または trusted として分類し直すことで回避できます。
  • スクリプティング疑似 URL を評価するために試行された移動操作です。ただし、含まれるドキュメント (一般にブラウザ内の HTML ドキュメント) はアクセス権限が与えられていないサンドボックスからのものです。含まれるドキュメントに allowScriptAccess="always" を指定することで、この問題を回避できます。
  • HTML ファイルと SWF ファイルのドメインが一致しないとき、特別なウィンドウ "_self""_top"、または "_parent" の移動は、allowScriptAccess"none" または "sameDomain" に設定されている HTML ページに SWF ファイルがある場合はできません。
  • デフォルト以外の名前を持つウィンドウを、ローカルファイルシステムのサンドボックスにある SWF ファイル内から移動することはできません。
  • 一般的な予約ポートに接続することはできません。ブロックされている全ポートの一覧については、『ActionScript 3.0 のプログラミング』のセキュリティに関する章の「ネットワーク API の制限」を参照してください。
 
Error — マウスイベントやキー入力イベントなどのユーザー操作に応じてメソッドが呼び出されない場合。この要件は Flash Player のコンテンツおよび Adobe AIR のアプリケーションサンドボックスコンテンツ以外にのみ適用されます。

関連項目




次の例では、新しいブラウザウィンドウで URL http://www.adobe.com を開き、URLVariables オブジェクトで捕捉したユーザーセッションに関するデータを Web サーバーに渡します。
package {
    import flash.display.Sprite;
    import flash.net.navigateToURL;
    import flash.net.URLRequest;
    import flash.net.URLVariables;

    public class NavigateToURLExample extends Sprite {

        public function NavigateToURLExample() {
            var url:String = "http://www.adobe.com";
            var variables:URLVariables = new URLVariables();
            variables.exampleSessionId = new Date().getTime();
            variables.exampleUserLabel = "Your Name";
            var request:URLRequest = new URLRequest(url);
            request.data = variables;
            try {            
                navigateToURL(request);
            }
            catch (e:Error) {
                // handle error here
            }
        }
    }
}
registerClassAlias()関数 
public function registerClassAlias(aliasName:String, classObject:Class):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

AMF (Action Message Format) でオブジェクトがエンコードされるとき、オブジェクトのクラス (タイプ) を維持します。オブジェクトを AMF にエンコードする場合、この関数は、そのクラスのエイリアスを保存し、オブジェクトのデコード時にクラスを復元できるようにします。エンコードコンテキストで、オブジェクトのクラスのエイリアスが登録されていない場合、オブジェクトは匿名オブジェクトとしてエンコードされます。同様に、デコードコンテキストで、同じエイリアスが登録されていない場合、デコードするデータに対して、匿名オブジェクトが作成されます。

LocalConnection、ByteArray、SharedObject、NetConnection、および NetStream はすべて、AMF でオブジェクトをエンコードするクラスの例です。

エンコードおよびデコードコンテキストでは、エイリアスに同じクラスを使用する必要はありません。エンコード先およびデコード先のクラスに、ソースクラスによって直列化されたすべてのメンバーが含まれている限り、クラスを意図的に変更できます。

パラメータ

aliasName:String — 使用するエイリアスです。
 
classObject:Class — 指定されたエイリアスに関連付けられたクラスです。


例外
TypeError — いずれかのパラメータが null の場合。

関連項目




この例では、registerClassAlias() 関数を使用して、クラス ExampleClass のエイリアス(com.example.eg)を登録します。クラスのエイリアスが登録されると、オブジェクトを ExampleClass のインスタンスとして非直列化できるようになり、コードは true を出力します。registerClassAlias() 呼び出しが削除されると、コードは false を出力します。
package {
    import flash.display.Sprite;
    import flash.net.registerClassAlias;
    import flash.utils.ByteArray;

    public class RegisterClassAliasExample extends Sprite {
        public function RegisterClassAliasExample() {
            registerClassAlias("com.example.eg", ExampleClass);
            var eg1:ExampleClass = new ExampleClass();
            var ba:ByteArray = new ByteArray();
            ba.writeObject(eg1);
            ba.position = 0;
            var eg2:* = ba.readObject();
            trace(eg2 is ExampleClass); // true
        }
    }
}

class ExampleClass {}
sendToURL()関数 
public function sendToURL(request:URLRequest):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

URL リクエストをサーバーに送信しますが、応答は無視します。

サーバーの応答を調べるには、代わりに URLLoader.load() メソッドを使用します。

一般的な予約ポートに接続することはできません。ブロックされている全ポートの一覧については、『ActionScript 3.0 のプログラミング』のセキュリティに関する章の「ネットワーク API の制限」を参照してください。

SWF ファイルがこのメソッドを使用しないようにするには、SWF コンテンツを含んでいる HTML ページに allowNetworking パラメータ (object タグおよび embed タグのパラメータ) を設定します。

Flash Player 10 以降では、"multipart/form-data" などのマルチパート Content-Type にアップロードが含まれていると(アップロードが含まれているかどうかは POST ボディ内の "content-disposition" ヘッダーの "filename" パラメータで示されます)、そのアップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

また、すべてのマルチパート Content-Type では、RFC2046 標準に準拠した有効なシンタックスを使用する必要があります。シンタックスが有効でない場合は、アップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。

セキュリティ情報について詳しくは、以下を参照してください。

パラメータ

request:URLRequest — データの送信先の URL を指定する URLRequest オブジェクトです。


例外
SecurityError — 信頼されていないローカル SWF ファイルはインターネットへの接続を許可されません。この問題は、この SWF ファイルを local-with-networking または trusted として分類し直すことで回避できます。
 
SecurityError — 一般的な予約ポートに接続することはできません。ブロックされている全ポートの一覧については、『ActionScript 3.0 のプログラミング』のセキュリティに関する章の「ネットワーク API の制限」を参照してください。

関連項目




次の例では、URLVariables オブジェクトで捕捉したユーザーセッションに関するデータを、http://www.yourDomain.com/application.jsp にあるアプリケーションに渡します。
 package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.net.URLVariables;
    import flash.net.sendToURL;

    public class SendToURLExample extends Sprite {

        public function SendToURLExample() {
            var url:String = "http://www.yourDomain.com/application.jsp";
            var variables:URLVariables = new URLVariables();
            variables.sessionId = new Date().getTime();
            variables.userLabel = "Your Name";

            var request:URLRequest = new URLRequest(url);
            request.data = variables;
            trace("sendToURL: " + request.url + "?" + request.data);
            try {
                sendToURL(request);
            }
            catch (e:Error) {
                // handle error here
            }
        }
    }
}

 

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flex/3_jp/langref/flash/net/package.html