XML Cross-domain con PHP
Come potete vedere qui a destra ho implementato da poco le API di last.fm tramite i feed xml.
Nel mio post precedente ho spiegato come utilizzare i dati in Xml nel codice PHP per creare i propri widget. Questo sistema però ha un inconveniente: finché il php non ha avuto il file dal server di last.fm la pagina non viene completata e il sito non si carica. E questo vale in generale.
Tramite javascript invece i contenuti vengono aggiunti dopo e se per qualche motivo il server non rispondesse, avremmo comunque possibilità di consultare il sito. E’ per questo che ho deciso di implementare la soluzione via jQuery.
Il problema è che per questioni di sicurezza non è consentito eseguire richieste ajax tra domini diversi (come in questo caso) a meno che non si utilizzi l’apposito formato JSON (come ho fatto con le API flickr, sempre qui a fianco) – che però last.fm non mette a disposizione gratuitamente.
Ho risolto il problema con un trucchetto creando una paginetta in php che si occupa di prelevare l’xml da last.fm e stamparlo così com’è. Il vantaggio è che tramite jQuery devo fare una semplice chiamata ad un file locale, del tipo “ajax.php?url=…” evitando quindi il problema del cross-domain ed evitando di fare il parsing direttamente nella pagina principale, col rischio di bloccarla in attesa di last.fm.
Il codice che ho usato è questo:
<?php
if (isset($_GET['url'])) {
$url = $_GET['url'];
echo(@file_get_contents($url));
}
?>
Mentre nella chiamata ajax utilizzo l’url:
/ajax.php?url=ws.audioscrobbler.com/1.0/user/cescopag/topalbums.xml
che risulta quindi un path locale.
Comments(1)
bell’articolo