Caricare dati in flash da un dominio esterno

Per motivi di sicurezza da flash non è possibilecaricare variabili o files che risiedono su un altro dominio.Questa limitazione è dovuta al "SecuritySandbox" che è stato implementato nella versione6 del FlashPlayer per assicurare un certo livello disicurezza sia per il nostro filmato che per la macchinadell'utente.In pratica il security sandbox definisce lefonti da cui il filmato falsh può ricevere dati.

Il security sandbox consente di accedere a:

1) tutto ciò che è contenutonel file .swf

2) files ospitati da servers compresi nellostesso dominio del filmato.

3) Local SharedObjects scritti da filmatiflash compresi nello stesso dominio

4 alcune informazioni sulla macchina su cuista girando il filmato.

5) azione dell'utene rivolte alfilmato, eventi di mause e tastiera.

Nella security sandbox non sono compresi files e variabiliallocati su altri domini ma usando la funzione readfile diphp è possibile raggirare facilmente questalimitazione.

 

Esempio 1 - Caricare file XML da dominio esterno

In questo esempio vogliamo caricare da macromedia.com il"Macromedia XML Resource Feed" , ovvero un file xmlsempre aggiornato che fornisce informazioni sugli ultimitutorials e risorse pubblicati su MM.com.

http://www.macromedia.com/devnet/resources/macromedia_resources.xml

per prima cosa dobbiamo creare il file .php che faràda proxy tra il nostro filmato flash e il file xml. Questosemplice script php, tramite la funzione readfile(), legge ilcontenuto del file remoto e restituisce i dati in output.Dato che la pagina php risiede sullo stesso dominio delfilmato flash questo non si accorgerà di aver ricevutodati da un dominio esterno.

<?php$xmlFeed = "http://www.macromedia.com/desdev/resources/macromedia_resources.xml";readfile($xmlFeed);?>


in flash invece di passare al metodo load l'url del filexml , passiamo l'url della pagina php

 

myXml = new XML();myXml.onLoad = function(success){   if(success)   {trace("xml feed:" +this);   } else {trace("errore");   }}myXml.load("http://percorso/proxy.php");

abbastanza semplice no?
usando questa tecnica potete facilmente caricare da dominiesterni , variabili, suoni e immagini :)

Esempio 2 - Caricare immagini da dominio esterno

in questo esempio usiamo la stessa tecnica per caricareimmagini.