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