Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Richieste cross domain, YQL, iframe, access control e altri workaround

Le possibilità di sfruttare servizi come proxy per la lettura di file cross-domain
Le possibilità di sfruttare servizi come proxy per la lettura di file cross-domain
Link copiato negli appunti

Servizi esterni tramite YQL

Se vogliamo effettuare semplici prove o importare rapidamente informazioni o feed da siti esterni, possiamo anche bypassare la creazione del proxy e utilizzare YQL, un servizio di Yahoo che ci permette di effettuare query sul Web sfruttando una sitassi SQL-like.

Possiamo ottenere le risposte sia in formato JSON, sia in XML. Vediamo un semplice esempio di richiesta verso un feed RSS:

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%27http%3A%2F%2Fwww.altroserver.it%2Fguide.xml%27%0A&format=xml

Se convertiamo i caratteri dall'url encoding leggiamo meglio il contenuto del parametro q:

select * from xml where url='http://www.altroserver.it/guide.xml'

Notiamo anche che abbiamo richiesto i dati in formato XML (format=xml).

Infine proviamo a scrivere il codice per la lettura di un feed:

$(document).ready(function() {
  $.ajax({ type: "GET",
    url: "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20xml%20where%20url%3D%27http%3A%2F%2Fwww.altroserver.it%2Fguide.xml%27%0A&format=xml",
	dataType: "xml",
	success: function(xml) {
	  $(xml).find('item').each(function() {
		var titolo = $(this).find('title').text();
		var link = $(this).find('link').text();
		var link_markup = '<li><a href="'+link+'" title="'+titolo+' - HTML.it">'+titolo+'</a></li>';
		$(link_markup).appendTo('#post');
      });
    },
	error: function(request, error, tipo_errore) { alert(error+': '+ tipo_errore); }
  });
});

Alla fine predisponiamo come al solito la lista che sarà popolata dallo script.

<ul #id="guide"></ul>

Interrogazioni Cross-Domain

Ci sono diverse metodologie per eludere la "same orgin policy" ed effettuare l'accesso ai dati da e verso domini diversi: si può sfruttare JSONP, c'è un workaround che sfrutta iframe annidati, un'altro che utilizza l'url-rewriting oppure possiamo utilizzare una stringa HTTP nell'header delle nostre pagine per renderle visibili anche all'esterno.

Quest'ultimo metodo è sicuramente interessante, ma possiamo utilizzarlo solo se siamo noi a servire i documenti. In questo caso, infatti, occorre modificare il livello di accesso alle nostre pagine utilizzando la direttiva Access-Control-Allow-Origin ad esempio inserendo:

Access-Control-Allow-Origin: *

Anche in questo caso bisogna stare attenti a temi come la compatibilità con i browser.

Infine è interessante notare che, filtrare i feed con servizi come feedburner e YQL, può essere una soluzione rapida e anche abbastanza efficiente. In ogni caso, per avere più controllo sul flusso delle informazioni, il proxy è la strada più raccomandabile.


Ti consigliamo anche