cross-domain ajax request

El standard XMLHttpRequest() definido por la W3C limita las llamadas javascript a nuestro propio dominio. Esto se definió así en su día por temas de seguridad y porque no parecía necesario realizar llamadas a webs externas.

Con los años, la evolución de las webs, popularización de apis publicas etc. Ha quedado demostrado que el segundo punto no era correcto. Visto esto la W3C se volvió a poner manos a la obra, modifico ligeramente el standard y a día de hoy ya podemos realizar llamadas ajax cross-domain con los últimos navegadores sin necesidad de alternativas rebuscadas.

Para mantener el filtro de seguridad ahora los distintos sites que deseen ser accesibles mediante llamadas ajax deberán incluir en las cabeceras http a que dominios dan acceso. Ejemplo:

<?php header('Access-Control: allow <?*>'); ?> //Permitir todos
<?php header('Access-Control: deny <?*>');?>  //Denegar todos
<?php header('Access-Control: allow <?ab.net>');?>
//Permitir solamente ab.net

En cuanto a la parte de javascript: chrome 2, safari 4 y firefox 3.5 siguen el standard e IE8 se ha inventado una función con otro nombre que hace exactamente lo mismo (para variar…). Ejemplo de el código javascript:

var url = "http://www.proyecto-f.net/";

if(XMLHttpRequest) {
  var request = new XMLHttpRequest();

  if("withCredentials" in request) {

      // Firefox 3.5 y compañia
      request.open('GET', url, true);
      request.onreadystatechange = handler;
      request.send();

  } else if (XDomainRequest) {

      // IE8
      var xdr = new XDomainRequest();
      xdr.open("get", url);
      xdr.send();

  } else {

      // Otros navegadores
  }
}
Compartir:
  • Facebook
  • Twitter
  • Meneame
  • Google Bookmarks
  • del.icio.us
  • BarraPunto
  • Bitacoras.com
  • Netvibes
  • MySpace
  • Technorati
  • email
  • PDF

Posts relacionados:

  1. Detectar petición ajax en PHP

Deja un comentario

You must be logged in to post a comment.