flash.net パッケージには、新しいブラウザーウィンドウを開く、URL 要求をサーバーに送信する、クラスエイリアスを扱うなどの操作を行うためのパッケージレベルの関数が含まれます。
関数 | 定義元 | ||
---|---|---|---|
registerClassAlias() メソッドの呼び出しを介して以前にエイリアスを登録したクラスを検索します。 | flash.net | ||
Flash Player のコンテナを含むアプリケーション(通常はブラウザー)でウィンドウを開くか、置き換えます。 | flash.net | ||
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, Flash Lite 4 |
既に registerClassAlias()
メソッドの呼び出しによってエイリアスが登録されているクラスを検索します。
このメソッドは flash.utils.getDefinitionByName()
メソッドとやり取りを行いません。
パラメーター
aliasName:String — 検索するエイリアスです。
|
Class — 指定されたエイリアスに関連付けられたクラスです。見つからない場合は、例外がスローされます。
|
例外
ReferenceError — エイリアスが登録されていません。
|
関連する API エレメント
navigateToURL | () | 関数 |
public function navigateToURL(request:URLRequest, window:String = null):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Flash Player のコンテナを含むアプリケーション(通常はブラウザー)でウィンドウを開くか、置き換えます。Adobe AIR では、関数によってデフォルトシステム Web ブラウザーで URL が開かれます。
重要なセキュリティメモ
開発者は URL 値を FlashVars などの外部ソースから取得した navigateToURL()
関数に渡すことがよくあります。攻撃側は、クロスサイトスクリプティングなどの攻撃を実行するためにこれらの外部ソースを操作しようとする場合があります。したがって、開発者は URL 値をこの関数に渡す前にすべての URL を検証する必要があります。
URL の適切なデータ検証方法は、アプリケーション全体での URL の使用状況によって異なります。最も一般的なデータ検証方法では、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 ページ(存在する場合)が、信頼できるローカルのセキュリティサンドボックス内にある場合のみです。一部のブラウザーでは、javascript プロトコルを navigateToURL()
メソッドと共に使用することをサポートしていません。代わりに、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 処理が拘束されます。
- POST 処理は、マウスのクリックやキーの押下などのユーザーが開始したアクションに応答して実行する必要があります。
- POST 処理がクロスドメインである(POST ターゲットが、POST 要求を送信中の SWF ファイルと同じサーバー上にない)場合は、クロスドメインアクセスを許可する URL ポリシーファイルをターゲットサーバーが提供する必要があります。
また、すべてのマルチパート Content-Type では、RFC2046 標準に準拠した有効なシンタックスを使用する必要があります。シンタックスが有効でない場合は、アップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。
モバイルプラットフォームの AIR では、sms: および tel: URI スキームがサポートされます。Android では、vipaccess:、connectpro: および market: URI スキームがサポートされます。URL 構文は、プラットフォームの規則に従います。例えば、Android では URI スキームを小文字にする必要があります。これらのスキームのいずれかを使用して URL に移動すると、ランタイムによって、スキームを処理するためにデフォルトのアプリケーションで URL が開かれます。そのため、tel:+5555555555
にアクセスすると、入力した指定の番号で電話ダイヤラーが開きます。電話ダイヤラーなどの別のアプリケーションまたはユーティリティは、URL を処理できる必要があります。
次のコードは、Android 上で VIP Access アプリケーションと Connect Pro アプリケーションを呼び出す方法を示しています。
//Invoke the VIP Access Application. navigateToURL(new URLRequest("vipaccess://com.verisign.mvip.main?action=securitycode")); //Invoke the Connect Pro Application. navigateToURL(new URLRequest("connectpro://"));
パラメーター
request:URLRequest — 移動先の URL を指定する URLRequest オブジェクトです。
Adobe AIR で実行中のコンテンツの場合、 | |
window:String (default = null ) — request パラメーターで指定されたドキュメントを表示するブラウザーウィンドウまたは HTML フレームです。特定のウィンドウの名前を入力するか、次の値のいずれかを使用します。
このパラメーターに値を指定しない場合は、新しい空のウィンドウが作成されます。スタンドアローン Flash Player では、新しい( 注意:ローカルファイルシステムのサンドボックスで実行される SWF ファイル内のコードが |
例外
IOError — request オブジェクトの digest プロパティが null ではありません。URLRequest オブジェクトの digest プロパティを設定できるのは、URLLoader.load() メソッドを呼び出して SWZ ファイル(Adobe プラットフォームコンポーネント)を読み込む場合のみです。
| |
SecurityError — Flash Player(および Adobe AIR のアプリケーションサンドボックスコンテンツ以外)では、このエラーは次の条件でスローされます。
| |
Error — マウスイベントやキー入力イベントなどのユーザー操作に応じてメソッドが呼び出されない場合。この要件は Flash Player のコンテンツおよび Adobe AIR のアプリケーションサンドボックスコンテンツ以外にのみ適用されます。
|
さらに例を参照
関連する API エレメント
例 ( この例の使用方法 )
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 } } } }
// Requires // - Button symbol on Stage (or a display object, such as a MovieClip) with instance name "buttonSymbol" // buttonSymbol.addEventListener(MouseEvent.CLICK, buttonSymbol_click); function buttonSymbol_click(evt:MouseEvent):void { var req:URLRequest = new URLRequest("http://www.adobe.com/"); navigateToURL(req, "_blank"); }
var request:URLRequest = new URLRequest( "tel:+5555555555" ); navigateToURL( request );
var request:URLRequest = new URLRequest( "sms:+5555555555" ); navigateToURL( request );
var request:URLRequest = new URLRequest( "market://search?q=pname:com.adobe.flashplayer" ); navigateToURL( request );
registerClassAlias | () | 関数 |
public function registerClassAlias(aliasName:String, classObject:Class):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9, Flash Lite 4 |
AMF(Action Message Format)でオブジェクトがエンコードされるとき、オブジェクトのクラス(タイプ)を維持します。オブジェクトを AMF にエンコードする場合、この関数は、そのクラスのエイリアスを保存し、オブジェクトのデコード時にクラスを復元できるようにします。エンコードコンテキストで、オブジェクトのクラスのエイリアスが登録されていない場合、オブジェクトは匿名オブジェクトとしてエンコードされます。同様に、デコードコンテキストで、同じエイリアスが登録されていない場合、デコードするデータに対して、匿名オブジェクトが作成されます。
LocalConnection、ByteArray、SharedObject、NetConnection、および NetStream はすべて、AMF でオブジェクトをエンコードするクラスの例です。
エンコードおよびデコードコンテキストでは、エイリアスに同じクラスを使用する必要はありません。エンコード先およびデコード先のクラスに、ソースクラスによって直列化されたすべてのメンバーが含まれている限り、クラスを意図的に変更できます。
パラメーター
aliasName:String — 使用するエイリアスです。
| |
classObject:Class — 指定されたエイリアスに関連付けられたクラスです。
|
例外
TypeError — いずれかのパラメーターが null の場合。
|
関連する API エレメント
例 ( この例の使用方法 )
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, Flash Lite 4 |
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 処理が拘束されます。
- POST 処理は、マウスのクリックやキーの押下などのユーザーが開始したアクションに応答して実行する必要があります。
- POST 処理がクロスドメインである(POST ターゲットが、POST 要求を送信中の SWF ファイルと同じサーバー上にない)場合は、クロスドメインアクセスを許可する URL ポリシーファイルをターゲットサーバーが提供する必要があります。
また、すべてのマルチパート Content-Type では、RFC2046 標準に準拠した有効なシンタックスを使用する必要があります。シンタックスが有効でない場合は、アップロードに適用されるセキュリティ規則によって POST 処理が拘束されます。
セキュリティについて詳しくは、Flash Player デベロッパーセンターのトピック:セキュリティを参照してください。
パラメーター
request:URLRequest — データの送信先の URL を指定する URLRequest オブジェクトです。
|
例外
SecurityError — 信頼されていないローカル SWF ファイルはインターネットへの接続を許可されません。この問題は、この SWF ファイルを local-with-networking または trusted として分類し直すことで回避できます。
| |
SecurityError — 一般的な予約ポートには接続できません。遮断されたポートの詳しいリストについては、『ActionScript 3.0 開発ガイド』の「ネットワーク API の制限」を参照してください。
|
例 ( この例の使用方法 )
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 } } } }
Tue Jun 12 2018, 10:51 AM Z