Make Text Bigger
Make Text Smaller
Reset Text Size
Home
Richieste AJAX a server remoti PDF E-mail
Scritto da Matteo Parrucci   
domenica 25 novembre 2007

logo ajaxCosa si intende con Cross-Domain AJAX?

Si parla di richista AJAX cross-domain o remota quando gli script lato server che generano il contenuto che vogliamo aggiornare dinamicamente si trovano su un server diverso da quello che fornisce la pagina.

Perchè non è possibile fare richieste AJAX dirette ad altri domini?

La risposta che ho trovato su molti blog e guide è "per motivi di sicurezza" ma francamente non ho mai capito perchè non sia sicuro fare richieste cross-domain.

Come si può aggirare questo ostacolo?

In realtà la soluzione è piuttosto semplice: Si tratta di applicare il design pattern "Proxy".
In sostanza si delega la richiesta ad una pagina del nostro server che effettuerà la richiesta vera e propria al server remoto restituendo il risultato al client che lo ha richiesto.

Pro:

Mette uno strato in più tra il server remoto e la pagina risultante. Questo strato ci permette di prendere solo quello che ci interessa dalla pagina remota e restituire solo il necessario al client.

Contro:

Il servizio dipende dal server remoto e potrebbero essere necessarie librerie lato server (ad esempio per php serve curl)

Un po' di codice:

Il Javascript:

Per semplicità userò la sintassi di jquey
$(document).ready(function() {
    $.post("proxy.php", {url:"http://www.example.com/remote_page.php", data: "optiona_data" },
      function(returned_data){
        Fai qualcosa con i dati restituiti
      });
});

Il codice qui sopra semplicemente effettua una richiesta di tipo post alla pagina proxy.php passandole i  dati url="http://www.example.com/remote_page.php" che rappresenta la pagina remota a cui fare la richiesta ed un generico data="optional_data" che potrebbe contenere uno dei paramentri per la richiesta remota.

Lato server:

Il codice della pagina proxy.php a cui faccio la richiesta in questione era un po' troppo lunga da inserire qui quindi potete scaricare questo file
Praticamente questa pagina crea una richiesta HTTP (in get o in post a seconda di quale riga commentate all'inizio del file) sfruttando l'url remoto e gli eventuali parametri passatigli da javascript . Fatto questo richiede la pagina (tramite curl) e restituisce al javascript la risposta ottenuta.

Conclusioni:

Non solo è possibile fare richieste ajax a server remoti ma è anche semplice.

Possibili utilizzi:

E' possibile sfruttare questa tecnica per includere nel proprio sito servizi esterni (specialmente se espongono api) come google maps, flickr lastfm ecc.
Quota questo articolo sul tuo sito

  Commenti (2)
1. Molto utile
Scritto da Giovanni, alle 01-12-2008 20:30 , IP: 87.19.119.181
Hai risolto un mio grande dubbio. Grazie :)
2. No problem
Scritto da Matteo Parrucci website, alle 01-12-2008 21:02 , IP: 213.140.19.121
No problem... Felice che sia servito...

Solo gli utenti registrati possono lasciare commenti
Loggati o registrati.

 
< Prec.   Pros. >