Foros del Web » Creando para Internet » Flash y Actionscript »

problema con flash y xml (diferente dominio)

Estas en el tema de problema con flash y xml (diferente dominio) en el foro de Flash y Actionscript en Foros del Web. Hola comunidad, tengo el siguiente problema, quiero cargar un archivo xml que está publicado en cierto servidor, es un archivo rss y puedo acceder a ...
  #1 (permalink)  
Antiguo 02/07/2006, 22:51
Avatar de drake1983  
Fecha de Ingreso: febrero-2005
Ubicación: Cuba
Mensajes: 125
Antigüedad: 11 años, 9 meses
Puntos: 0
Exclamación problema con flash y xml (diferente dominio)

Hola comunidad, tengo el siguiente problema, quiero cargar un archivo xml que está publicado en cierto servidor, es un archivo rss y puedo acceder a el a traves de cualquier browser, pongamos por ejemplo que es miserver.com

En el flash tengo el siguiente codigo:
Código PHP:
System.useCodepage=true;
var 
miXML:XML = new XML();
miXML.ignoreWhite=true;
miXML.onLoad = function(success:Boolean) {
    if (
success) {
        
trace("Se ha cargado el xml");
        
trace(miXML);
        
    } else {
        
trace("No se pudo cargar el xml");
    }
};

miXML.load("http://miserver.com/xml/lista.xml"); 
Pero cuando prueba la pelicula me da error, no se puede cargar el archivo,(estoy dentro de una red local, y el server está dentro de ella), lo pruebo en un navegador y tampoco me carga nada.
Estuve leyendo y me dihjeron que era algo de dominios, pero no sé que pueda ser. alguien me ayuda?
Gracias de antemano.
__________________
Nada que perder...
  #2 (permalink)  
Antiguo 03/07/2006, 00:13
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 10 años, 10 meses
Puntos: 5
Buenas,

Efectivamente, es un problema de seguridad de flash. Un swf no puede cargar datos desde otro dominio (o incluso subdominio, depende de la versión del flash player). Si el swf está en www.sitio1.com, sólo puede acceder a contenidos que estén dentro de www.sitio1.com, y va a fallar al intentar comunicarse con, por ejemplo, www.sitio2.com o incluso subdominio.sitio1.com.

Hay al menos dos formas de modificar esto.

La primera sería que el administrador del server al cual querés acceder te dé permiso a través de un archivo xml crossDomain.xml (el esquema de ese xml se puede encontrar fácil buscándolo en google). En la mayoría de los casos es cuando menos, una solución poco práctica (y además, improbable).

Una segunda opción es usar php (o asp u otro lenguaje de servidor) para que actúe como un "proxy". El script está en tu server y es el que hace el pedido al otro dominio (lo cual no tiene las restricciones de seguridad propias de un swf). Para el swf, sólo te estás comunicando con un recurso del mismo dominio, así que no hay conflictos.

Un ejemplo muy básico (aunque funcional) de este script en php (para usarlo en "producción" convendría agregar al menos algún tipo de manejo de errores):

Código:
<?php
header("Content-type:text/xml");
$str_xml = file_get_contents($_GET['url']);
echo $str_xml;
?>
Simplemente, abre la url que le pases como parámetro, lee el archivo, lo guarda en un string, y lo imprime (con lo cual, el xml original le llega al swf).

El código AS, ligeramente retocado, sería algo así:

Código:
System.useCodepage=true;
var miXML:XML = new XML();
miXML.ignoreWhite=true;
miXML.onLoad = function(success:Boolean) {
    if (success) {
        trace("Se ha cargado el xml");
        trace(miXML);
        
    } else {
        trace("No se pudo cargar el xml");
    }
};

//var pathProxy = "http://localhost/proxy.php"; // para probar desde flash descomentar esta línea y comentar la siguiente
var pathProxy = "proxy.php";
var rssUrl = "http://miserver.com/xml/lista.xml"; // poner la url del xml a abrir
var url = pathProxy + "?url=" + rssUrl;

miXML.load(url);
Suerte
Califa
  #3 (permalink)  
Antiguo 03/07/2006, 01:07
Avatar de drake1983  
Fecha de Ingreso: febrero-2005
Ubicación: Cuba
Mensajes: 125
Antigüedad: 11 años, 9 meses
Puntos: 0
Califa, muchas gracias colega, entendí muy bien la explciación, mañana mismo lo pruebo, realmente necesitaba algo asi.
Gracias y saludos!!.
__________________
Nada que perder...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:31.