terça-feira, 19 de abril de 2011

Dicas de Programação: Fazendo Cross Domain em PHP

Quem nunca quis obter informações via AJAX de uma página (ou XML, ou JSON, etc), mas não conseguia por causa do "problema" do cross domain?

Eu já tive este problema...

Mas resolvi ele, através deste método:

1) Abro uma conexão para o site que quero pelo método fopen:
<?php
$url = $_GET['url'];
//ou $url = 'http://feeds.feedburner.com/BlogDoTakemura';
$file = fopen($url,'r');
?>

2) Leio todo o "arquivo":
<?php
$content = '';
while (!feof($file)) {
$content .= fgets($file);
}
?>

3) Fecho a conexão:
<?php
fclose($file);
?>

4) Removo os caracteres especiais "\n", "\r" e outros:
<?php
$content = htmlspecialchars($content);
$content = str_replace("\r", '', $content);
$content = str_replace("\n", '', $content);
?>

5) Agora, eu escrevo o conteúdo em uma variável javascript:
var App = function() {};
App.url = "<?php echo $url;?>";
App.contentText = "<?php echo $content;?>";

6) Salvo o arquivo (por exemplo: "crossdomain.php"), e chamo ele assim em outra página:
<script src="http://<dominio>/<caminho>/crossdomain.php?url=http://feeds.feedburner.com/BlogDoTakemura"></script>

7) Para pegar o conteúdo, basta usar a propriedade contentText do "objeto" App:
<script>
alert(App.contentText);
</script>

Legal, não?

Até mais!

Nenhum comentário: