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 🙂