Le package flash.net contient des fonctions au niveau du package qui permettent d’ouvrir une nouvelle fenêtre de navigateur, d’envoyer une demande d’URL à un serveur et de traiter les alias de classes.
Fonction | Défini par | ||
---|---|---|---|
Recherche une classe pour laquelle un alias a été enregistré par le biais d’un appel de la méthode registerClassAlias(). | flash.net | ||
Ouvre ou remplace une fenêtre dans l’application qui héberge le conteneur Flash Player (en règle générale, un navigateur). | flash.net | ||
Préserve la classe (type) d’un objet lors de son codage au format AMF (Action Message Format). | flash.net | ||
Envoie une requête d’URL à un serveur, mais ne tient pas compte de la réponse. | flash.net |
getClassByAlias | () | fonction |
public function getClassByAlias(aliasName:String):Class
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Recherche une classe pour laquelle un alias a été enregistré par le biais d’un appel de la méthode registerClassAlias()
.
Cette méthode n’interagit pas avec la méthode flash.utils.getDefinitionByName()
.
Paramètres
aliasName:String — Alias à rechercher.
|
Class — Classe associée à l’alias indiqué. Si elle est introuvable, une exception est renvoyée.
|
Valeur émise
ReferenceError — L’alias n’avait pas été enregistré.
|
Eléments de l’API associés
navigateToURL | () | fonction |
public function navigateToURL(request:URLRequest, window:String = null):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Ouvre ou remplace une fenêtre dans l’application qui héberge le conteneur Flash Player (en règle générale, un navigateur). Dans Adobe AIR, la fonction ouvre une URL dans le navigateur Web par défaut du système
Remarque de sécurité importante
Les développeurs transmettent souvent des valeurs d’URL à la fonction navigateToURL()
obtenues à partir de source externes, telles que FlashVars. Il est possible que des pirates informatiques tentent de manipuler ces sources externes, notamment par programmation croisée. Par conséquent, les développeurs doivent valider toutes les URL avant de les transmettre à la fonction.
Il existe plusieurs façons de valider correctement les données d’URL selon l’utilisation des URL dans l’application. L’une des techniques de validation de données les plus courantes consiste à vérifier que l’URL appartient au modèle d’URL adéquat. Par exemple, l’autorisation non intentionnelle d’URL javascript: peut entraîner des manipulations par programmation croisée. Vous pouvez également vérifier que l’URL se trouve dans votre domaine afin de vous assurer que les personnes qui pratiquent l’hameçonnage ne puissent pas utiliser le fichier SWF comme redirecteur ouvert. Pour plus de sécurité, vous pouvez par ailleurs choisir de valider le chemin de l’URL et de vérifier que l’URL est conforme aux RFC.
Le code suivant montre un exemple simple de validation de données : toute URL ne commençant pas par http:// ou https:// est rejetée et les URL sont analysées afin de vérifier qu’elles se trouvent dans votre nom de domaine. Il est possible que cet exemple ne soit pas valable pour toutes les applications Web ; vous devez donc évaluer s’il est nécessaire de procéder à des vérifications supplémentaires.
// 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); }
Dans le cas d’un contenu local s’exécutant dans un navigateur, les appels à la méthode navigateToURL()
qui spécifient un pseudo-protocole "javascript:"
(via un objet URLRequest
transmis en tant que premier paramètre) ne sont autorisés que si le fichier SWF et la page Web qui le contient (le cas échéant) se trouvent dans le sandbox de sécurité approuvé localement. Certains navigateurs ne prennent pas en charge l’utilisation du protocole javascript avec la méthode navigateToURL()
. Envisagez plutôt d’utiliser la méthode call()
de l’API ExternalInterface
pour appeler les méthodes JavaScript dans la page HTML.
Dans Flash Player et dans les sandbox non-applicatifs d’Adobe AIR, vous ne pouvez pas utiliser les ports habituellement réservés. Pour obtenir une liste complète des ports bloqués, voir la rubrique « Restriction des API de réseau » dans le Guide du développeur d’ActionScript 3.0.
Dans Flash Player versions 10 et ultérieures s’exécutant dans un navigateur, il est possible que vous ne puissiez pas utiliser cette méthode par programmation pour ouvrir une fenêtre contextuelle. Certains navigateurs (et configurations de navigateur) peuvent bloquer les fenêtres contextuelles ; il n’est donc pas possible de garantir l’ouverture de toutes les fenêtres contextuelles. Toutefois, pour un résultat optimal, utilisez cette méthode pour ouvrir une fenêtre contextuelle uniquement dans le code qui s’exécute comme conséquence directe de l’action d’un utilisateur (par exemple, un événement de type clic de souris ou pression de touche).
Dans Flash Player versions 10 et ultérieures, si vous utilisez un Content-Type en plusieurs parties (par exemple « multipart/form-data ») qui contient un chargement (indiqué par un paramètre « filename » dans un en-tête « content-disposition » au sein du corps POST), l’opération POST est soumise aux règles de sécurité appliquées aux chargements :
- L’opération POST doit être effectuée en réponse à l’action d’un utilisateur, comme un clic de souris ou la pression d’une touche.
- Si l’opération POST se fait entre plusieurs domaines (la cible POST ne se trouve pas sur le même serveur que le fichier SWF qui envoie la demande POST), le serveur cible doit fournir un fichier de régulation d’URL qui permette l’accès interdomaines.
Par ailleurs, la syntaxe de tous les Content-Type en plusieurs parties doit être correcte (selon la norme RFC2046). Si la syntaxe s’avère incorrecte, l’opération POST est soumise aux règles de sécurité appliquées aux chargements.
Dans AIR installé sur les plates-formes mobiles, les modèles d’URI sms: et tel: sont pris en charge. Sous Android, les modèles d’URI vipaccess:, connectpro: et market: sont pris en charge. La syntaxe de l’URL est soumise aux conventions de la plate-forme. Par exemple, sur Android, le modèle d’URI doit être en minuscules. Lorsque vous accédez à une URL à l’aide de l’un de ces modèles, le moteur d’exécution ouvre l’URL dans l’application par défaut pour la gérer le modèle. Ainsi, l’accès à tel:+5555555555
ouvre le numéroteur téléphonique avec le numéro spécifié déjà saisi. Une autre application ou un autre utilitaire, par exemple un numéroteur téléphonique, doit être disponible pour traiter l’URL.
Le code suivant explique comment appeler les applications VIP Access et Connect Pro sous Android :
//Invoke the VIP Access Application. navigateToURL(new URLRequest("vipaccess://com.verisign.mvip.main?action=securitycode")); //Invoke the Connect Pro Application. navigateToURL(new URLRequest("connectpro://"));
Paramètres
request:URLRequest — Objet URLRequest indiquant l’URL à atteindre.
Pour le contenu s’exécutant dans Adobe AIR, lors de l’utilisation de la fonction | |
window:String (default = null ) — Fenêtre de navigateur ou cadre HTML dans lequel afficher le document désigné par le paramètre request . Vous pouvez entrer le nom d’une fenêtre spécifique ou utiliser l’une des valeurs suivantes :
Si vous ne renseignez pas la valeur de ce paramètre, une fenêtre vide est créée. Dans le lecteur autonome, vous pouvez spécifier une nouvelle fenêtre ( Remarque : si le code d’un fichier SWF s’exécutant dans le sandbox local avec système de fichiers appelle la fonction |
Valeur émise
IOError — La propriété digest de l’objet request n’est pas définie sur null . Vous devez définir la propriété digest d’un objet URLRequest uniquement lorsque vous appelez la méthode URLLoader.load() pour charger un fichier SWZ (composant de la plateforme Adobe).
| |
SecurityError — Dans Flash Player (et dans le contenu d’un sandbox non-applicatif dans Adobe AIR), cette erreur est renvoyée dans les cas suivants :
| |
Error — Si la méthode n’est pas appelée en réponse à l’action d’un utilisateur, notamment à un événement de type souris ou pression de touche. Cette condition ne s’applique qu’au contenu dans Flash Player et au contenu d’un sandbox non-applicatif dans Adobe AIR.
|
Eléments de l’API associés
Exemple ( Comment utiliser cet exemple )
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 | () | fonction |
public function registerClassAlias(aliasName:String, classObject:Class):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Préserve la classe (type) d’un objet lors de son codage au format AMF (Action Message Format). Lorsque vous codez un objet au format AMF, cette fonction enregistre l’alias de sa classe, ce qui vous permet de la récupérer lors du décodage de l’objet. Si le contexte d’encodage n’a pas enregistré d’alias pour la classe d’un objet, celui-ci est codé en tant qu’objet anonyme. De même, si l’alias n’est pas enregistré dans le contexte de décodage, un objet anonyme est créé au décodage.
Toutes les classes LocalConnection, ByteArray, SharedObject, NetConnection et NetStream codent les objets au format AMF.
Il n’est pas nécessaire que les contextes utilisent une même classe pour un alias. Ils peuvent changer de classe intentionnellement, à condition que la classe de destination contienne tous les membres sérialisés par la classe source.
Paramètres
aliasName:String — Alias à utiliser.
| |
classObject:Class — Classe associée à l’alias indiqué.
|
Valeur émise
TypeError — Indique si l’un ou l’autre des paramètres est réglé sur null .
|
Eléments de l’API associés
Exemple ( Comment utiliser cet exemple )
registerClassAlias()
pour enregistrer un alias (com.example.eg
) pour la classe ExampleClass. Un alias étant enregistré pour la classe, l’objet peut être désérialisé en tant qu’occurrence de la classe ExampleClass, et le code renvoie true
. Si l’appel de registerClassAlias()
était supprimé, le code renverrait 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 | () | fonction |
public function sendToURL(request:URLRequest):void
Version du langage: | ActionScript 3.0 |
Versions du moteur d’exécution: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Envoie une requête d’URL à un serveur, mais ne tient pas compte de la réponse.
Pour examiner la réponse du serveur, utilisez plutôt la méthode URLLoader.load()
.
Vous ne pouvez pas vous connecter aux ports généralement réservés. Pour obtenir une liste complète des ports bloqués, voir la rubrique « Restriction des API de réseau » dans le Guide du développeur d’ActionScript 3.0.
Vous pouvez empêcher un fichier SWF d’utiliser cette méthode en définissant le paramètre allowNetworking
des balises object
et embed
dans la page HTML qui comporte le contenu SWF.
Dans Flash Player versions 10 et ultérieures, si vous utilisez un Content-Type en plusieurs parties (par exemple « multipart/form-data ») qui contient un chargement (indiqué par un paramètre « filename » dans un en-tête « content-disposition » au sein du corps POST), l’opération POST est soumise aux règles de sécurité appliquées aux chargements :
- L’opération POST doit être effectuée en réponse à l’action d’un utilisateur, comme un clic de souris ou la pression d’une touche.
- Si l’opération POST se fait entre plusieurs domaines (la cible POST ne se trouve pas sur le même serveur que le fichier SWF qui envoie la demande POST), le serveur cible doit fournir un fichier de régulation d’URL qui permette l’accès interdomaines.
Par ailleurs, la syntaxe de tous les Content-Type en plusieurs parties doit être correcte (selon la norme RFC2046). Si la syntaxe s’avère incorrecte, l’opération POST est soumise aux règles de sécurité appliquées aux chargements.
Pour plus d’informations concernant la sécurité, voir la rubrique du Pôle de développement Flash Player : Sécurité (disponible en anglais uniquement).
Paramètres
request:URLRequest — Objet URLRequest indiquant l’URL à laquelle envoyer des données.
|
Valeur émise
SecurityError — Les fichiers SWF locaux et non approuvés ne peuvent pas communiquer avec Internet. Pour contourner ce problème, reclassifiez le fichier SWF en tant que fichier local avec accès au réseau ou en tant que fichier approuvé.
| |
SecurityError — Vous ne pouvez pas vous connecter aux ports généralement réservés. Pour obtenir une liste complète des ports bloqués, voir la rubrique « Restriction des API de réseau » dans le Guide du développeur d’ActionScript 3.0.
|
Exemple ( Comment utiliser cet exemple )
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, 09:48 AM Z