Comunidad de diseño web y desarrollo en internet online

problema con crossdomain policy

Citar            
MensajeEscrito el 31 Ene 2013 11:59 am
Hola.
Tengo un problema con un swf cargado en un frame en un dominio remoto mediante frames. A ver si me explico.

En el dominio A esta la página con el swf que conecta con PHP(en el mismo dominio) para obtener datos // esto funciona perfectamente.

Paso la página y el swf a dominio B, creo el crossdomain.xml en dominio A //sigue funcionando perfectamente, conecta y obtiene los datos del dominio A.

Llega mi problema: intento cargar la página con el swf albergada en dominio A en un frame de una página creada en dominio B, y el swf no funciona, no obtiene datos. Por supuesto, el crossdomain.xml sigue en dominio A.

Llevo dos días leyendo documentación y no acabo de encontrar una solución.

Alguien puede ayudarme al respecto. Soy mas bien novato en AS3.

Muchas gracias de antemano.

Por AM

1 de clabLevel



Genero:Masculino  

Me busco la vida....

chrome
Citar            
MensajeEscrito el 31 Ene 2013 01:11 pm
BuenAS:

Independientemente del tema de los dominios de seguridad, aquí suele darse un problema:

Cuando un swf A carga otro swf B que a su vez carga contenidos, las rutas relativas las construye a partir del swf A cargador, Y NO del swf B cargado, como sería de esperar. A esto se le suele llamar problema del dueño del stage (por si quieres googlear un poco).

Verifica que las rutas cargadas sean REALMENTE las correctas, ya que puedes encontrar que estás cargando un contenido de:

http://dominio B/imagenes/imagen.png

cuando Flash ha compuesto la ruta con respecto al swf cargador A

http://dominio A/imagenes/imagen.png

Yo suelo utilizar una función del tipo:

Código ActionScript :

private function getUrl(url:String):String
{
   if (!(url.indexOf(":") > -1 || url.indexOf("/") == 0 || url.indexOf("\\") == 0))
   {
      var rootURL:String;
      if (root)
      {
         rootURL = root.loaderInfo.url;
         if (rootURL)
         {
            var lastIndex: int= Math.max(rootURL.lastIndexOf("\\"), rootURL.lastIndexOf("/"));
            if (lastIndex != -1)
            {
               url = rootURL.substr(0, lastIndex + 1) + url;
            }
         }
      }
   }
   return url;
}


Así, en lugar de cargar una imagen como:

Código ActionScript :

loader.load(new URLRequest("imagenes/imagen.png"))


la parseo con la anterior funcion:

Código ActionScript :

loader.load(new URLRequest(getUrl("imagenes/imagen.png")))


Si miras la función, lo que hace es obtener la ruta donde está realmente el swf B cargado a través de root.loaderInfo.url y componer la ruta de la imagen correctamente.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 31 Ene 2013 05:18 pm
Gracias Lukánicos.

No es el caso, las rutas en el URLRequest no están relativas, son "http://dominioA.com/procesadorPHP.php".

Por AM

1 de clabLevel



Genero:Masculino  

Me busco la vida....

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.