Control del acceso URL saliente

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

La creación de scripts y el acceso URL salientes (a través de URL HTTP, mailto:, etc.) se realizan a través de las siguientes API de

  • La función flash.system.fscommand()

  • El método ExternalInterface.call()

  • La función flash.net.navigateToURL()

Para contenido cargado desde el sistema de archivos local, las llamadas a estos métodos son correctas únicamente si el código y la página web que lo contiene (si existe) se encuentran en el entorno limitado local de confianza o el de la aplicación de AIR. Las llamadas a estos métodos no se realizan correctamente si el contenido se encuentra en el entorno limitado local con acceso a la red o en el entorno limitado local con sistema de archivos.

En el caso de contenido que no se carga de forma local, todas estas API se pueden comunicar con la página web en la que están incorporadas, en función del valor del parámetro AllowScriptAccess que se describe a continuación. La función flash.net.navigateToURL() tiene la capacidad adicional de comunicarse con cualquier ventana o fotograma de navegador abierto, no solo con la página en la que está incorporado el archivo SWF. Para obtener más información sobre esta funcionalidad, consulte Uso de la función navigateToURL() .

El parámetro AllowScriptAccess del código HTML que carga un archivo SWF controla la capacidad de realizar un acceso a URL saliente desde un archivo SWF. Defina este parámetro dentro de la etiqueta PARAM o EMBED. Si no se define ningún valor para AllowScriptAccess , el archivo SWF y la página HTML solo se podrán comunicar si ambos se encuentran dentro del mismo dominio.

El parámetro AllowScriptAccess puede tener uno de los tres valores siguientes: "always" , "sameDomain" o "never" .
  • Cuando AllowScriptAccess se establece como "always" , el archivo SWF se puede comunicar con la página HTML que lo incorpora, incluso cuando su dominio y el de la página son diferentes.

  • Cuando AllowScriptAccess se establece como "sameDomain" , el archivo SWF se puede comunicar con la página HTML que lo incorpora solo cuando su dominio y el de la página son iguales. Este es el valor predeterminado de AllowScriptAccess . Utilice esta configuración, o no defina un valor para AllowScriptAccess , para evitar que un archivo SWF alojado en un dominio acceda a un script de una página HTML perteneciente a otro dominio.

  • Cuando AllowScriptAccess se establece como "never" , el archivo SWF no se puede comunicar con ninguna página HTML. El uso de este valor se ha desfasado desde la versión de Adobe Flash CS4 Professional. No se recomienda y no debe ser necesario si no se proporcionan archivos SWF que no son de confianza desde su propio dominio. Si es preciso servir archivos SWF que no sean de confianza, Adobe recomienda crear un subdominio independiente y colocar en él todo ese contenido.

Este es un ejemplo de configuración de la etiqueta AllowScriptAccess en una página HTML para permitir el acceso URL saliente a un dominio diferente:

<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> 

Uso de la función navigateToURL()

Además de la configuración de seguridad especificada por el parámetro allowScriptAccess descrito anteriormente, la función navigateToURL() tiene un segundo parámetro opcional: target . El parámetro target se puede utilizar para especificar el nombre de una ventana o fotograma HTML al que enviar la petición de URL. Las restricciones de seguridad adicional se aplican a dichas peticiones y varían en función de si navigateToURL() se utiliza como una sentencia de creación de scripts o como una sentencia de no creación de scripts.

En el caso de las sentencias de creación de scripts, como navigateToURL("javascript: alert('Hello from Flash Player.')") , es necesario tener en cuenta las reglas siguientes.

  • Si el archivo SWF es un archivo de confianza local, la solicitud funcionará correctamente.

  • Si el destino es la página HTML en la que se incorpora el archivo SWF, se aplicarán las reglas allowScriptAccess descritas anteriormente.

  • Si el destino tiene contenido cargado del dominio al que pertenece el archivo SWF, la solicitud funcionará correctamente.

  • Si el destino tiene contenido cargado de un dominio distinto al que pertenece el archivo SWF, y no se cumple ninguna de las condiciones anteriores, la solicitud no funcionará correctamente.

En el caso de las sentencias que crean scripts (como HTTP, HTTPS y mailto: ), la solicitud no funcionará correctamente si se cumplen todas las condiciones siguientes:

  • El destino es una de las palabras clave especiales "_top" o "_parent" , y

  • el archivo SWF se encuentra en una página web alojada en un dominio diferente, y

  • el archivo SWF está incorporado con un valor para allowScriptAccess que no es "always" .

Para obtener más información

Para obtener información sobre el acceso URL saliente, consulte las siguientes entradas en Referencia de ActionScript 3.0 para la plataforma de Adobe Flash: