Alters

Varios - Misc

Buenas!

Hacía tiempo que no escribí nada en el blog... llevo severos retrasos con todos mis proyectos... así que, para no estar demasiado sin hacer una entrada "con chicha", vamos a ver varios temas rápidos.

AJAX Cross-Domain (ACD)

Muchas veces habréis oído aquello de "usar API's", si bien no las habéis usado alguna vez (google maps, google calendar...)

Para aquellos que no sepan qué es una API, decir que es una capa de abstracción creada por programadores para facilitar el uso de herramientas web.

Un ejemplo: quiero poner en un mapa dónde vivo (en mi web). Hace tiempo, yo lo hubiera hecho así:

 - Entro en google
 - Busco google maps
 - Busco mi calle
 - Hago un print de pantalla
 - Coloco la imagen en mi web

Sin embargo, las API permiten que mi web conecte con google, y le puedo especificar dónde vivo (en latitud y longitud) y él se encarga de todo (es decir, delegamos el funcionamiento a google). Yo solo me tengo que preocupar de poner una capa (div) para recibir el mapa y llamar al método correspondiente.

Pues bien, uno de los principales problemas que entraña el uso de una API es el ACD (AJAX Cross-Domain).

¿Qué es el ACD? es un impedimento (una medida de seguridad, más bien propia de IE) que impide que una web cargue datos de un servidor externo, tal como indica la imágen "img1" (en rojo marcada la comunicación interrumpida).

img1
Esto frustra todo amago de comunicación con servidores externos. Sin embargo, las API se usan. ¿Cómo?
Pues hay varios métodos:


  • Proxie transparente: esta medida se basa en modificar el archivo .htaccess, con una regla de reescritura, de manera que podemos convertir algo como "http://miweb.com/api" en "http://apiweb.com". Con esto conseguimos establecer un puente, mediante el cual nosotros llamaremos a "miweb.com/api", y mediante el archivo htaccess, estaremos realmente accediendo a "apiweb.com".
    • Ventajas: funciona bien, y de manera simple
    • Inconvenientes: cada cliente de la API tiene que configurar su htaccess (algunos hostings no dejan).
  • Página ACD: es una web (http://www.ajax-cross-domain.com/) en la que te puedes descargar un src (código fuente) de un programa cgi. Mediante htaccess hacemos que lo interprete como un js, y éste hace de puente para solventar el problema de ACD.
    • Ventajas: configurable, seguro
    • Inconvenientes: necesita aceso a ACD, y no todos los hostings permiten interpretar cgi como js.
  • Envoltura: es el método más usable de todos, ya que no necesita de nada por parte del cliente (eso sí, la API tiene que estar preparada para usar envoltura). El método de la envoltura consiste en incluir la llamada a la API dentro de un elemento <script> en nuestra web. De esta manera, nuestra web hará una llamada a la API, para incluír el contenido al script. El contenido que "se crea" es, ni más ni menos que el resultado de llamar a la API deseada.
    • Ventajas: siempre podremos usarla
    • Inconvenientes: el programador de la API tiene que prepararla, y (que yo sepa) solo se puede mandar datos vía GET.
Y, ¿porqué os comento el problema del ACD? pues porque estuve varias semanas luchando con este problema con una API que me tocó programar en mi trabajo, y finalmente lo conseguí solucionar usando el método de la envoltura (y la consecuente remodelación de la API...).

En la próxima entrada (a no ser que sea sobre M!nas), trataré de solucionar el tema del diseño web, para hacer lo máximo compatible con IE, Firefox, chrome, opera y safari.

Para poder seguir entregando material en abundancia, lo haré tipo "serie", como he estado haciendo estas entradas.