El paquete flash.net contiene funciones de nivel de paquete para la apertura de una nueva ventana del navegador, el envío de una solicitud de URL a un servidor y la gestión de alias de clases.
Función | Definido por | ||
---|---|---|---|
Busca una clase con una alias previamente registrado mediante una llamada al método registerClassAlias(). | flash.net | ||
Abre o reemplaza una ventana de la aplicación con el contenedor de Flash Player (suele ser un navegador). | flash.net | ||
Se conserva la clase (el tipo) de un objeto si el objeto está codificado con formato de mensaje de acción (AMF). | flash.net | ||
Envía una petición de URL a un servidor, pero ignora cualquier respuesta. | flash.net |
getClassByAlias | () | función |
public function getClassByAlias(aliasName:String):Class
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Busca una clase con una alias previamente registrado mediante una llamada al método registerClassAlias()
.
Este método no interactúa con el método flash.utils.getDefinitionByName()
.
Parámetros
aliasName:String — El alias que se va a buscar.
|
Class — La clase asociada al alias dado. Si no se encuentra, se emitirá una excepción.
|
Emite
ReferenceError — No se registró el alias.
|
Elementos de API relacionados
navigateToURL | () | función |
public function navigateToURL(request:URLRequest, window:String = null):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Abre o reemplaza una ventana de la aplicación con el contenedor de Flash Player (suele ser un navegador). En Adobe AIR, la función abre una dirección URL en el navegador web predeterminado del sistema
Nota importante sobre seguridad
Los desarrolladores suelen transferir valores de URL a la función navigateToURL()
obtenidos a partir de orígenes externos, como FlashVars. Los atacantes pueden intentar manipular estos orígenes externos para invadir con técnicas como la creación de scripts en todo el sitio. Por ello, los desarrolladores deben validar todas las direcciones URL antes de transferirlas a esta función.
Una buena validación de datos para direcciones URL puede significar cosas distintas en función del uso que se le dé a la URL en toda la aplicación. Las técnicas de validación de datos más habituales incluyen validar que la URL pertenece al esquema adecuado. Por ejemplo, permitir inconscientemente Javascript: las direcciones URL pueden terminar creando scripts en entre los distintos sitios. Validar que la URL se encuentra en un determinado dominio puede garantizar que el archivo SWF no se utilizará como desviador abierto para los usuarios que pretendan utilizar técnicas de phishing. Para aumentar la seguridad, elija validar la ruta de la dirección URL y confirmar que ésta se ajusta a la normativa RFC
Por ejemplo, el siguiente código muestra un ejemplo sencillo de validación de datos mediante la negación de cualquier URL que no empiece por http:// o https:// y comprobar que la URL se encuentra en su nombre de dominio. Este ejemplo puede no ser válido para todas las aplicaciones web. Debe considerar si es necesario llevar a cabo más comprobaciones con la 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); }
En el contenido local que se ejecuta en el navegador, las llamadas al método navigateToURL()
que especifiquen un seudoprotocolo "javascript:"
(por ejemplo, mediante un objeto URLRequest
transferido como primer parámetro) sólo están permitidas si el archivo SWF y la página web que lo contiene (en caso de haber una) se encuentran en el entorno limitado de seguridad local. Algunos navegadores no admiten el protocolo javascript con el método navigateToURL()
. En su lugar, utilizan el método call()
de la API ExternalInterface
para invocar métodos de JavaScript dentro de la página HTML que lo contiene.
En Flash Player y en entornos limitados no incluidos en la aplicación en Adobe AIR, no es posible conectarse a puertos habitualmente reservados. Para obtener una lista completa de los puertos bloqueados, consulte la sección “Restricción de API de red” en el Guía del desarrollador de ActionScript 3.0.
En Flash Player 10 y versiones posteriores ejecutadas en un navegador, utilizar este método en programación para abrir una ventana emergente puede no producir los resultados deseados. Algunos navegadores (y configuraciones de navegador) bloquean las ventanas emergentes en todo momento; no es posible, por ello, garantizar que aparezcan las ventanas emergentes. No obstante, para intentar garantizar un comportamiento correcto, utilice este método para abrir ventanas emergentes únicamente en código que se ejecute como resultado directo de la acción del usuario (por ejemplo, en un controlador de eventos de clics del ratón o de pulsaciones de tecla).
En Flash Player 10 y versiones posteriores, si utiliza una estructura Content-Type de varias partes (por ejemplo, "multipart/form-data") con una acción de carga (indicada por un parámetro "filename" en un encabezado "content-disposition" dentro del cuerpo POST), la operación POST está sujeta a las reglas de seguridad aplicadas a las cargas:
- Es preciso realizar una operación POST como respuesta a una acción iniciada por el usuario, por ejemplo, un clic de ratón o la pulsación de una tecla.
- Si la operación POST afecta a varios dominios (el destino POST no se encuentra en el mismo servidor que el archivo SWF que envía la petición POST), el servidor de destino debe proporcionar un archivo de política URL que permita el acceso a varios dominios.
Asimismo, en cualquier estructura Content-Type de varias partes, la sintaxis debe ser válida (de acuerdo con la norma RFC2046). Si la sintaxis no es válida, la operación POST está sujeta a las reglas de seguridad que se aplican a las cargas.
En AIR, en plataformas móviles, los esquemas de URI sms: y tel: no son compatibles. En Android, se admiten los esquemas de URI vipaccess:, connectpro: y market:. La sintaxis de URL está sujeta a las convenciones de la plataforma. Por ejemplo, en Android, el esquema de URI debe escribirse en minúsculas. Cuando navegue a una URL mediante uno de estos esquemas, el motor de ejecución abre la URL en la aplicación predeterminada para gestionar el esquema. Por consiguiente, desplazarse a tel:+5555555555
abre el marcador de teléfono con el número especificado ya introducido. Una aplicación o utilidad independiente, como un marcador de teléfono debe estar disponible para procesar la URL.
El código siguiente muestra cómo se puede invocar las aplicaciones VIP Access y Connect Pro en 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://"));
Parámetros
request:URLRequest — Un objeto URLRequest que especifica la URL a la que se navega.
Para contenido ejecutado en Adobe AIR, cuando utiliza la función | |
window:String (default = null ) — La ventana del navegador o el fotograma HTML donde se muestra el documento indicado por el parámetro request . Puede introducir el nombre en una ventana concreta o utilizar los valores siguientes:
Si no especifica ningún valor para este parámetro, se creará una nueva ventana vacía. En el reproductor autónomo, puede especificar una nueva ventana ( Nota: si el código de un archivo SWF que se ejecuta en el entorno limitado local con el sistema de archivos llama a la función |
Emite
IOError — La propiedad digest del objeto request no es null . Sólo debe establecerse la propiedad digest de un objeto URLRequest al llamar al método URLLoader.load() cuando se carga un archivo SWZ (componente de plataforma de Adobe).
| |
SecurityError — En Flash Player (y en contenido no incluido en el entorno limitado de la aplicación en Adobe AIR), este error se emite en las siguientes situaciones:
| |
Error — Si no se llama al método como respuesta a la acción de un usuario, como un evento de ratón o de pulsación de tecla. Este requisito sólo afecta al contenido en Flash Player y a contenido no incluido en el entorno limitado de la aplicación en Adobe AIR.
|
Más ejemplos
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
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 | () | función |
public function registerClassAlias(aliasName:String, classObject:Class):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Se conserva la clase (el tipo) de un objeto si el objeto está codificado con formato de mensaje de acción (AMF). Al codificar un objeto con AMF, la función guarda el alias para la clase para que ésta se pueda recuperar al descodificar el objeto. Si el contexto de la codificación no registró ningún alias para la clase del objeto, éste se codificará como un objeto anónimo. De forma similar, si el contexto de la descodificación no tiene el mismo alias registrado, se creará un objeto anónimo para los datos descodificados.
Algunos ejemplos de clases que codifican objetos con AMF son: LocalConnection, ByteArray, SharedObject, NetConnection y NetStream.
No es necesario que los contextos de la codificación y la descodificación utilicen la misma clase para un alias; pueden cambiar las clases intencionadamente, siempre y cuando la clase de destino contenga todos los miembros serializados por la clase de origen.
Parámetros
aliasName:String — El alias que se va a utilizar.
| |
classObject:Class — La clase asociada al alias dado.
|
Emite
TypeError — Si algún parámetro es null .
|
Elementos de API relacionados
Ejemplo ( Cómo utilizar este ejemplo )
registerClassAlias()
para registrar un alias (com.example.eg
) para la clase ExampleClass. Como hay un alias registrado para la clase, se podrá deserializar el objeto como una instancia de ExampleClass, y el resultado del código dará como resultado true
. Si se eliminase la llamada a registerClassAlias()
, el código daría como resultado 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 | () | función |
public function sendToURL(request:URLRequest):void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Envía una petición de URL a un servidor, pero ignora cualquier respuesta.
Para examinar la respuesta del servidor, utilice el método URLLoader.load()
.
No es posible conectar con puertos reservados comúnmente. Para obtener una lista completa de los puertos bloqueados, consulte la sección “Restricción de API de red” en el Guía del desarrollador de ActionScript 3.0.
Asimismo, se puede impedir que un archivo SWF utilice este método si define el parámetro allowNetworking
de las etiquetas object
y embed
de la página HTML que aloja el contenido SWF.
En Flash Player 10 y versiones posteriores, si utiliza una estructura Content-Type de varias partes (por ejemplo, "multipart/form-data") con una acción de carga (indicada por un parámetro "filename" en un encabezado "content-disposition" dentro del cuerpo POST), la operación POST está sujeta a las reglas de seguridad aplicadas a las cargas:
- Es preciso realizar una operación POST como respuesta a una acción iniciada por el usuario, por ejemplo, un clic de ratón o la pulsación de una tecla.
- Si la operación POST afecta a varios dominios (el destino POST no se encuentra en el mismo servidor que el archivo SWF que envía la petición POST), el servidor de destino debe proporcionar un archivo de política URL que permita el acceso a varios dominios.
Asimismo, en cualquier estructura Content-Type de varias partes, la sintaxis debe ser válida (de acuerdo con la norma RFC2046). Si la sintaxis no es válida, la operación POST está sujeta a las reglas de seguridad que se aplican a las cargas.
Para obtener más información, consulte el tema del Centro de desarrollo de Flash Player Seguridad.
Parámetros
request:URLRequest — Un objeto URLRequest que especifica la URL a la que se van a enviar datos.
|
Emite
SecurityError — Los archivos SWF locales que no son de confianza no pueden comunicarse con Internet. Puede solucionar este problema reclasificando el archivo SWF como archivo local de red o archivo de confianza.
| |
SecurityError — No es posible conectar con puertos reservados comúnmente. Para obtener una lista completa de los puertos bloqueados, consulte la sección “Restricción de API de red” en el Guía del desarrollador de ActionScript 3.0.
|
Ejemplo ( Cómo utilizar este ejemplo )
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, 02:28 PM Z