Contournement du problème de sécurité crossdomain de flash pour le chargement de données !

Contenu du snippet

Bonjour tout le monde !!!

Bon voici la problèmatique :
On voudrait pouvoir charger des données issues de fichiers txt, xml ou autre depuis des sites vers le site où se trouve le flash.
C'est à dire que par exemple un flash situé sur toto.com voudrait lire les données d'un fichier xml se trouvant sur tonsite.com.

Si depuis votre machine en local, tout fonctionne bien, il en est tout autrement lorsque votre appli est sur votre site internet.
En effet, la politique de sécurité de macromedia interdit de charger des données depuis d'autres site.
Pour que cela fonctionne, il suffit de mettre un fichier XML du nom de crossdomain.xml qui contient dans ses balises, le nom du domaine du site appelant.
On voit de suite que c'est pas très pratique.

Ma solution :
Elle est hyper simple, il suffit de passer par un PHP !

Source / Exemple :


Voilà comment tout cela se passe.

Côté flash :

data_xml  = new XML();
var_xml    = new LoadVars();
data_xml.ignoreWhite = true; // pas toujours utile selon ce qu'on veut faire.

// on passe la variable urls à php avec l'url du site distant
var_xml.urls="http://www.tonsite.com/fichier.xml";

//on envoi cette variable et on attends en retour le fichier complet avec balises et tout et tout ....
var_xml.sendAndLoad("http://www.monsite.com/parse.php",data_xml);	

data_xml.onLoad = function() {
                                                 Noeud1 = this.firstChild;
                                                 //affichage du contenu du 1er noeud
                                                 trace(Noeud1);
                                                 //traitement des données du xml de votre choix
if (this.loaded) {
                        // affichage du code de status du xml (voir la doc de flasj pour les codes de retour)
                        trace(data_xml.status);
                        trace(" voilà c'est chargé, si vos données sont dans des tableaux vous pouvez travailler avec :!!!");
                        }//loaded
}// onload

//****************************************************
Maintenant voyons le PHP : (parse.php)

<?php
function global_var($var) {

global $HTTP_POST_VARS, $HTTP_GET_VARS;
if (!empty($HTTP_POST_VARS[$var])) {
                                    return $HTTP_POST_VARS[$var];
                                   }elseif (!empty($HTTP_GET_VARS[$var]))
				 	    {
                                    return $HTTP_GET_VARS[$var];
                                    }else{
                                          return '';
                                          }
                                   }

$urls = global_var('urls');
$fcontents = join( '', file( $urls ) );
echo $fcontents;
?>		
---->>>>>>
Voilà ya pas plus simple au niveau du php.

Maintenant vous pouvez transposer cela avec des fichiers txt ou autre en utilisant le meme principe, mais avec LoadVars pour des fichiers TXT. Il me semble que loadvars n'a pas ce problème de sécurité mais sait-on jamais ce que macromédia nous réserve dans sa version prochaine de flash.

Enfin pour le problème de XML c'est ma solution et ça fonctionne bien.

Conclusion :


Sinon j'ai vu que les webmasters ont ajouté la rubrique CLASS c'est classe !

Bon je ne maitrise pas encore bien les class alors si ToP30 (qui me les a fait découvrir) ou un autre codeur, avait envie et surtout le temps de faire de ma source une class, ce serait trop Classe ... arf non Top ! (lol)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.