Security sandbox violation

Estaba haciendo una aplicación en FLEX que requiere el uso de AMFPHP para conectarme con una Base de Datos en Postgres y todo siempre funcionó bien, todo hasta que decidí acceder a mi aplicación desde una URL y no desde el .swf que se genera. El error descrito fue el siguiente:

Error #2044: Unhandled SecurityErrorEvent:. text=Error #2048: Security sandbox violation: http://localhost/SQR/bin-debug/SQR.swf cannot load data from http://127.0.0.1/amfphp/gateway.php.

Es un error muy común y fácil de solucionar. Se genera cuando una aplicación flash trata de acceder a datos que residen en otro dominio web. En mi caso, aunque no lo crean, es porque accedí a mi aplicacion desde mi servidor localhost y dentro de ella tengo un script que pide datos a un servicio bajo el dominio 127.0.0.1. Entonces se preguntaran, ¿no es localhost y 127.0.0.1 lo mismo?

Y mi respuesta es… “No necesariamente”. No es la primera vez que he tenidos problemas asi. Una vez, Windows dejó de reconocer el dominio localhost y debía acceder a mi servidor local siempre desde 127.0.0.1. La solución fue sencilla modificanddo un par de líneas en una subcarpeta de Windows -si ese es el caso de ustedes, googleenlo, es sencillo de resolver :P-

En el mejor de los casos, la solución se consigue cambiando todos los 127.0.0.1 por localhost o viceversa. Esto quiere decir que si en el AS3 tienes referencias a 127.0.0.1 entonces accede a tu aplicacion empleando la URL 127.0.0.1. Para cualquier IP o dominio aplica lo mismo.

En un entorno de producción real, esta modificacion ya no es viable. Para solucionarlo se crea un fichero en XML que va a permitir resolver el problema En este enlace Adobe publica la solución 🙂

Anuncios

Todo poderoso FLEX – Una introducción

Creo que puedo crear una serie de entradas honrando al poderoso FLEX y consiguiendo seguidores mediante mi evangelización.  No vean esto tan raro, la verdad es que sí existen evangelistas de FLEX, trabajan en Silicon Valley y viajan por las naciones demostrando el poder de la creación más valiosa de Adobe. Me pregunto si la antigua Macromedia se arrepiente de haber vendido su tecnología -antiguamente Macromedia FLASH- al ver en lo que se ha convertido su hijo prodigio.

Adobe Flex Logo

Existen muchas entradas técnicas en cientos de blogs y sitios especializados que también honran tributo a esta maravilla del Web 2.0.

Qué puedo hacer con FLEX?

Con un único código, tu aplicación se ejecutará en tu escritorio -ejecutándose sobre Adobe Air- o desde cualquier navegador web que lo soporte, actualmente, todos los que tengan el plugin de Flash.  FLEX es multiplataforma, el SDK y el compilador está disponible tanto en Windows como en Linux.

Si has programado en Java, FLEX será un paseo para ti. Puedes construir la aplicación de tus sueños empleando AS3, lenguaje script full orientado a objetos; emplear el FLEX Builder para construirlas de manera gráfica simplemente arrastrando y ordenando los componentes de interfaz como más te guste y asignando propiedades y eventos en MXML -lenguaje de etiquetado XML de FLEX-

Como había mencionado anteriormente, FLEX puede ejecutarse en tu navegador sin embargo eso no implica que esté ejecutándose desde la web. Las aplicaciones en FLEX se descargan en su totalidad en tu equipo y su capacidad de procesamiento queda limitada solo por la velocidad y capacidad del hardware de tu computador. Esto depende, por supuesto, de la naturaleza de la aplicación. Ejemplo, un editor de imágenes basado en FLEX se descargará y podrá funcionar sin necesidad de volverse a conectar; esto es gracias a que FLEX se integra perfectamente con el sistema operativo de tu equipo permitiéndole tener acceso a tu carpeta de imágenes y cualquier lugar de tus dispositivos de almacenamiento. Por otro lado, si la aplicación es una herramienta colaborativa, entonces si requerirá de una conexión para enviar audio, video o mensajes.

Cuando creas una aplicación en FLEX, tienes a tu disposición acceso a toda la tecnología multimedia que puedas imaginar. En combinación con Flash Interactive Server, puedes crear aplicaciones que se comuniquen con otras instancias de la misma en tiempo real y transmitir audio y video, archivos, mensajes entre objetos, entre otros. Todo de manera síncrona o asíncrona.

Lo siguiente es una combinación de enlaces de interés para ver qué es FLEX, donde se encuentra FLEX en nuestro día a día y lo que se puede hacer con él.

Sitio oficial del proyecto

http://labs.adobe.com/technologies/flex/

Compilación de Aplicaciones basadas en FLEX

http://flex.org/showcase/

http://designingwebinterfaces.com/great-flex-ux

Blogs amigos Evangelistas

http://blog.flexexamples.com/

http://flex.org/

En el próximo post dejaré mas detalles técnicos de FLEX y las ventajas para el programador, diseñador o aficionado al mundo de creación de contenido y aplicaciones web.