Sobre el flash y los links internos.

Parece ser que, motivo de una medida de seguridad, el objeto flash tiene la siguiente ‘limitacion’ o restriccion:

cuando el servidor donde está alojado el archivo flash (el definido en el parámetro “movie”) no coincide con el servidor donde está alojado
el codigo html que realiza la llamada al flash (el <object..> o <embed..>), los links definidos dentro del flash no funcionan.

Así por ejemplo, si tenemos el archivo “gotoApple.swf” que es un botón que, al hacer click on él, redirige el navegador a http://www.apple.com, y lo llamamos desde una página web con el siguiente código:

test.html:

<embed …. movie=”gotoApple.swf”…/>

Todo debería ir bien. Sin embargo, si llamamos el archivo usando una ruta absoluta:

test.html:

<embed …. movie=”http://myserver.com/flashobjects/gotoApple.swf” ../>

El boton flash no “funcionaria” a menos que la página “test.html” esté alojada también en el servidor “myserver.com”.

Esto se debe a motivos de seguridad, y se puede controlar con el parámetro “AllowScriptAccess”, que puede tener tres valores:

  • always
  • sameDomain
  • never

Los valores son bastante explicativos. Por defecto está en “sameDomain”, y por eso nuestro problemita con el getUrl() (porque , a fin de cuentas, el hecho de que al pinchar en una parte del flash, vayas a otra página web, es una “interacción” entre el objeto flash y el html, por lo cual cae bajo el control de la variable que define esto que es “allowScriptAccess”.

Así que otra forma de resolver este problema es con el parámetro “AllowScriptAccess”..

test.html:

<embed …. AllowScriptAccess=”always” … movie=”http://myserver.com/flashobjects/gotoApple.swf” ../>

debería funcionar aún si el html que llama al objeto flash no está en el mismo domino que el objeto flash mismo.

Más info en:

Links from SWF files in HTML page no longer function (Flash Player 9)

5 Comments on “El flash no deja ejecutar sus links internos si el objeto flash no esta alojado en el mismo servidor que lo llama.”

You can track this conversation through its atom feed.

  1. Acoo says:

    Mi problema es el mismo…pero…

    Yo mi archivo flash lo alojo en mi pag web de Ht- Arena…en el cual no se manejan los códigos HTML…sino algo mas estilo a los foros…osea

    http://www.ht-arena.com/zeven/ ese es mi sitio

    Yo subiría mi archivo flash a Ht-Arena de esta forma:
    [swf|750|178]http://h1.ripway.com/Zeven/banner.swf[/swf]

    Entonces no se cual seria la solución en este caso…

    Si podrías ayudarme gracias de antemano!!

  2. jzarate says:

    Acoo.

    Acabo de echar un vistazo a tu página (http://www.ht-arena.com/zeven/), y la cabecera flash está insertada con código html (no existe otra manera).

    De hecho, el código de tu página donde está insertado el flash es::

      
    

    ahí puedes ver que tienes los parámetros de los que hablo en el post, y por lo tanto la “receta” te vale.
    de todos modos, no entendí tu post demasiado bien, así que a lo mejor no es eso lo que quieres saber. en cualquier caso, me disparas otra vez y listo :-)

  3. Acoo says:

    Ok…La cosa es la siguiente…

    Yo subo mi cabecera flash en su servidor y luego la dirección donde esta alojado la pego en la ht-arena….con este código…

    [swf|750|178]http://h1.ripway.com/Zeven/web.swf[/swf]

    No tenemos otra forma de montar archivo en flash sino de ese modo…

    No se si a lo que te refieres en colocar el código que das es colocarlo en las acciones del flash cuando estamos creando el flash…cosa que no creo o si?…

    Gracias x la respuesta tan pronta!!…

  4. jzarate says:

    Acoo.

    Por lo que dices, entiendo lo siguiente:

    • los de ht-arena.com ya lo tienen todo maquetado, y dejan a los usuarios “customizar” un poco sus paginas. es decir, que tu puedes decidir que pones en la cabecera, que pones en el pie, etc …
    • sin embargo, la “maqueta” de la página no la controlas tú.
    • la forma que tienes de colocar flashes es subirlo en algún sitio X y luego decirles a ellos donde está el archivo para que lo pongan en la cabecera .

    Si esto es asi , entonces tu no tienes modo de controlar como se “inserta” el flash, solo puedes elegir qué flash se inserta.

    Sin embargo, precisamente por ser una medida de seguridad, no hay modo de decirle al flash que “permita” que se ejecuten links a terceros sitios “desde dentro” del flash, pues entonces ya no seria seguro. (es decir, el hipotético “crackeador” sólo tendría que crear un flash que “dentro de él” llevara las instrucciones precisas para saltarse esa medida de seguridad).

    La única forma de cambiar ese comportamiento es:

    • que el archivo flash esté alojado en el mismo servidor donde está alojada la página web donde sale ese flash. en tu caso, el archivo flash está alojado en. http://h1.ripway.com/Zeven/banner.swf, y la pagina donde ese archivo flash sale es: http://www.ht-arena.com/zeven/ . como puedes ver, los servidores son distintos
    • que, a la hora de insertar el flash, le indiques -en la página web donde ese archivo está insertado- que desactive esas medidas de seguridad (con todas las instrucciones que salen en el post). supongo que eso se lo tendrías que pedir a los que tienen la página web
    • el punto es que lo que es y debe ser imposible es que sólo con el archivo .swf puedas cambiar ese comportamiento, porque sería una agujero de seguridad del tamaño de un camión

    bueno, espero que te sirva.

    saludos!!!

  5. Acoo says:

    Gracias x la respuesta!!…

    Bueno la cosa es que los de HT-Arena no responderán a ese llamado que le haga…

    Muy pocas veces responden quejas de los usuarios…

    Y bueno la razón x la cual no se puede alojar archivos flash en Ht-Arena es xq ellos solo permiten alojar archivos jpeg y gif que no superen los 200 kb…

    Buehhno hay otra solución entonces…supongo

    Gracias x tu ayuda JZarate!! saludos…

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>