24 octubre, 2008

CSS HTTP Request

Aunque últimamente están apareciendo muchos problemas de seguridad en el navegador debido al auge de la programación con Javascript (hay que recordar que la mayor parte de los virus atacan a Windows porque tiene el 85% de cuota de mercado), hay una protección que está bien implementada: la restricción de Cross-Domain que impide que se pueda realizar directamente una petición a un servicio web de otro dominio.

Han surgido distintas soluciones para resolver ese problema, siendo la más reciente la que se explica en esta página (via Willison).

CSS HTTP Request (CHR) se sirve del hecho de que los archivos CSS no se ven afectados por la política de same-origin por lo que puede utilizarse para transportar datos si se controla desde Javascript. Además cuenta con la ventaja de que, a diferencia de JSONP que utiliza una etiqueta SCRIPT para realizar la llamada, no se cede el control al servicio web, lo que está considerado como un agujero de seguridad.

La función propuesta en su librería tiene dos parámetros, la URL del servicio web y la función que se llamará cuando se disponga de los datos:

CSSHttpRequest.get(
    "http://www.nb.io/hacks/csshttprequest/hello-world/",
    function(respuesta) { alert(respuesta); }
);
El funcionamiento es curioso: en el servidor, los datos se dividen en bloques de 2KB y se codifican en líneas @import(about:chr:DATA)

Como último detalle, en Firefox 3 los archivos CSS sí que tienen la restricción de Same-Origin pero los autores han conseguido resolver el problema y también funciona correctamente con el navegador.

Descargar. Addendum: JSONet es una librería pensada para aprovechar esta técnica de comunicación con el servidor sin la limitación Same-Origin.

Publicar un comentario en la entrada

Últimos links en indiza.com