begin process at 2012 05 26 03:56:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ActionScripts

 > CONTOURNEMENT DU PROBLÈME DE SÉCURITÉ CROSSDOMAIN DE FLASH POUR LE CHARGEMENT DE DONNÉES !

CONTOURNEMENT DU PROBLÈME DE SÉCURITÉ CROSSDOMAIN DE FLASH POUR LE CHARGEMENT DE DONNÉES !


 Description

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

  • 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.
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)



 Sources du même auteur

TRANSFERT DE DONNÉES FLASH <-> PHP - PETITE SUBTILITÉ AVEC J...
Source avec Zip Source avec une capture DÉCODER DES CODES HTML PARMIS D'AUTRES ! (AS2)
Source avec Zip Source avec une capture FORMATAGE HTML DANS UN DATAGRID
Source avec Zip Source avec une capture RETAILLER UNE IMAGE EN CONSERVANT SES PROPORTIONS
CHARGEMENT DE 2000 DONNEES SOUS FORME XML EN MOINS DE 1 SECO...

 Sources de la même categorie

Source avec Zip Source avec une capture OUVRIR UNE ANIMATION EXTERNE DANS UN CLIP VIDE. par KcHeY
Source avec Zip ZOOM SUR UNE IMAGE par yasdar
Source avec Zip Source avec une capture UN PEU DE MATH par yasdar
Source avec Zip Source avec une capture PARTICULE SYSTEM par yasdar
Source avec Zip Source avec une capture GALLERIE PHOTO AVEC XML par yasdar

Commentaires et avis

Commentaire de Mafassure le 20/11/2004 18:39:45 administrateur CS

oui oui tres bien cette solution encore faut il avoir php sur le server...
on en discuté cette semaine sur le forum de la restriction de XML(), et on nous a filer une astuce
charger le xml avec LoadVars()

var XMLObject:XML = new XML();
var LoadVarObject = new LoadVars();
LoadVarObject .sendAndLoad(url, XMLObject);

Trop puissant non !

http://www.flashkod.com/forum.v2.aspx?ID=332358

Commentaire de individis-bis le 20/11/2004 19:35:18

Oui c comme cela que je fais.. Mafassure...

Commentaire de Loubiou le 21/11/2004 05:21:55

Dans le cas d'un fichier machin.xml OUI mais dans le cas d'un fichier style machin.php?id=1025&t=25  ça merde à fond, même si ce chemin renvoie bien un XML.
Dans mon cas je récupére des flux RSS2 et j'utilise Flash 7.2 et j'ai eu plein de soucis pour récupérer les noeuds xml.

Avec ma solution ça roule incroyablement.

Faites l'essai qui sait.

Dès que j'ai terminé mon lecteur de news je vous le présenterais, mais j'ai un peu honte de mon code à coté de certain ici qui m'ont tué ... mais je progresse lol

Merci pour vos réponses aussi.


Commentaire de Loubiou le 21/11/2004 05:24:20

Euh pour répondre à Mafassure,

à l'heure actuelle, celui qui à un serveur web à forcément php donc pas de soucis.

Je précise que php doit etre du coté serveur lançant l'appli flash lecteur de fichiers XML et non comme le CrossDomain.xml qui lui doit se trouver à l'endroit du xml à lire.

Commentaire de Mafassure le 21/11/2004 11:38:48 administrateur CS

dans le cadre de l'espace perso inclu dans les abonnement internet c'est pas toujour possible d'utilisé php (c'est mon cas), y'a  free propose php et mysql de série...

merci pour ton code, je vais tester les deux methodes...
dans mon cas loadvars() conviendras parfaitement.

n'hesite pas a posté ton lecteur de news
on pourra commenté le code...
a mon avis ces echanges nous permet à tous de progressé.

Commentaire de Loubiou le 21/11/2004 17:08:59

Comme tu as raison, c'est pour cela que je post des trucs lorsque j'en ai.
J'en profite pour remercier tous ceux qui m'ont aidé parfois sur des bouts de code en php, n'étant pas un virtuoZ de se langugage.

Puisque tu vas essayer les 2 méthodes, je te passe des url pour tes tests.
flux Auto Actu : http://www.lamoooche.com/getRSS.php?idnews=1039
et un flux sur rétronimo : http://www.retronimo.com/getfeed.php?id=1008

Ces 2 urls renvoient du RSS2 au format XML, tu me diras si ton flash placé sur un site web renvoie bien les données XML car en local ça fonctionne avec loadvars mais pas en distant.
J'ai utilisé la méthose mc_vars.senAndLoad(url,mc_xml,"POST"); ou mc_vars est du type loadvars() et mc_xml et du type xml.

Je termine mon player cette nuit (arf)
Merci pour ton Aide Mafassure !!!!

Commentaire de alexblue le 06/06/2005 02:12:15

Je ne comprends pas du tout... Avec moi, je n'arrive pas à utiliser ce script avec des flux RSS ! ! ! ???
:(

Commentaire de Loubiou le 06/06/2005 02:46:32

Ben je ne sais pas quoi te dire ?
Tu as php d'activé sur ton site ? tu es chez free ? avec un chargement en local ça fonctionne ? tu as quelle version de flash ?
Regardes sur le site http://www.toutauto.fr à la rubrique NEWS, tu verras un lecteur RSS que j'ai réalisé, qui charge des flux xml sur divers serveur depuis mon flash.
On peut mettre 99 flux contenant 99 news (!) il suffit d'entrer les urls dans le xml de chargement et ajouter une image de fond pour chaque flus rss ...

Commentaire de alexblue le 06/06/2005 10:22:16

Le PHP fonctionne sur mon site... j'ai déjà plusieurs fichiers PHP. Je suis chez iFrance et j'ai Flash MX 6.0.
En local ça ne fonctionne pas non plus... il me sort du texte correspondant à du javascript.
J'ai l'impression que ça vient du fichier PHP... lorsque je le lis, il m'écrit :
   Warning: join(): Bad arguments. in /www/.........../site/parse.php on line 16

Commentaire de Loubiou le 06/06/2005 10:40:27

oui ! en effet, il faut que tu retouches le code PHP.
Me demande quelle version de php ils ont mis en ligne chez ifrance ???
Enfin tu es bien le 1er à avor un pb avec mon script ! arff
Regardes si tu mets bien tout en minuscules partout ....
Allez bon courage tu vas y arriver

Commentaire de alexblue le 06/06/2005 16:29:23

J'ai changé d'hébergeur (iFrance --> Multimania), et ça ne renvoit toujours rien.... :(

Commentaire de okaneganai le 28/08/2005 14:35:52

Merveilleux!!!!
C'est exactement ce que je cherchais!!!
bravo et merci!!!

Commentaire de legurou le 22/08/2008 23:57:26

Je vois pas comment on utilise ce script !
Enfaite, j'utilise un truc flash deja fait qui prend directement le fichier xml ou le lien du flux. Je fait comment pour lui assigné de passer par le php?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales