Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# un script de "http://localhost" c'est vu refuser des privilèges UniversalXPConnect

Envoyé par : Utilisateur anonyme

Date : 10/06/2005 09:17

Je n'en peu plus ... certains d'entre vous on déjas éssayé de m'aider mais j'en suis toujours au même point :

je dois créer une appli web (php/mysql) dans l'aquel je dois générer une liste provenant d'une table mysql. donc avec les info que l'on ma données je suis partis en direction d'un fichier rdf créé dynamiquement par php. mais je n'arrive a rien ! pire encore sur le site je test la création de fichier rdf en ligne exemple_rdf2 et la pas de pb affichage du xul est parfais et je n'ai pas de méssage d'érreur. je fais donc un copier coller des scripts en me disant que quitte a ne pas comprendre ce que je fais je pourrais le voir tourner. et bien non sur mon poste j'ai une érreur

un script de "http://localhost" c'est vu refuser des privilèges UniversalXPConnect

pourquoi une appli qui vient d'internet tourne sans pb sur mon poste alors qu'un copier coller du code en local ne marche pas ? franchement je ne sais plus ...

# Re: un script de "http://localhost" c'est vu refuser des privilèges UniversalXPConnect

Envoyé par : Julien Appert

Date : 10/06/2005 09:25

je dirais que c'est parce que le script se connecte à une page se trouvant sur un autre domaine. Si le fichier php était sur ton serveur local je pense que tu n'aurais pas ce message.

# Re: un script de "http://localhost" c'est vu refuser des privilèges UniversalXPConnect

Envoyé par : Utilisateur anonyme

Date : 10/06/2005 09:46

Ben non le script ne fait aucune référence a une page internet exterieur et je suis bein en local, j'ai même modifié la ligne : loadTree('tree', 'http://127.0.0.1/test/create_rdf.php'); // Adaptez le 2ème argument suivant l'emplacement du script PHP par : loadTree('tree', 'http://localhost/tools/create_rdf.php'); // Adaptez le 2ème argument suivant l'emplacement du script PHP pour qu'il colle a mon serveur. j'ai une arbo :

root
  |-xxxx
  |-xxxx
  |-tools
  |  |-create_rdf.php
  |  |-create_rdf.xul

et j'appel http://localhost/tools/create_rdf.xul ...

voici le code des fichiers php et xul mais a par la ligne de chemin du serveur il est exactement comme celui du site ...

create_rdf.xul :

 <?xml version="1.0"?>
 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
 <window
 id="sample_win"
 onload="init()"
 height="200 px"
 xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 <script type="application/x-javascript"><![CDATA[
 var tree;
 var out;
 var datasource;
 
 var Observer = {
   onBeginLoad: function(aSink) { out.label = 'Begin refresh';},
   onInterrupt: function(aSink) { out.label = 'Refresh interrupted!';},
   onResume: function(aSink) { out.label = 'Refresh resume!';},
   onEndLoad: function(aSink) { tree.builder.rebuild(); out.label = 'Refresh done'; },
   onError: function(aSink, aStatus, aErrorMsg) { alert('Error! ' + aErrorMsg); }
 };
 
 function init()
 {
 loadTree('tree', 'http://localhost/tools/create_rdf.php'); // Adaptez le 2ème argument suivant l'emplacement du script PHP
 out = document.getElementById("out");
 }
 
 function loadTree(treeId, dsUrl)
 {
 try {
   netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
   var RDF = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
   datasource = RDF.GetDataSource(dsUrl);
   var tree = document.getElementById(treeId);
   var remote = datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
   // Mozilla utilise un cache pour les sources de données. Si la source de données
   // est déja chargée (propriété loaded à true), on peut l'ajouter directement
   // à la base de données de notre élément et on lui demande de se reconstruire.
   // Si la source de données n'est pas dans le cache on lui attache d'abord un objet
   // Observer pour reconstruire l'élément quand la source de donnée sera complétement
   // chargée (mode asynchrone).
   if (remote.loaded)
   {
     tree.database.AddDataSource(datasource);
     tree.builder.rebuild();
   }
     else
   {
     var sink = datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
     tree.database.AddDataSource(datasource);
   }
 }
 catch(e) {
   alert(e);
 }
 }
 
 function reloadTree(treeId)
 {
 try {
   netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
   var sink = datasource.QueryInterface(Components.interfaces.nsIRDFXMLSink);
   sink.addXMLSinkObserver(Observer);
   datasource.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource).Refresh(false);
   tree = document.getElementById(treeId);
 }
 catch(e) {
   alert(e);
 }
 }
 ]]></script>
 <button label="Refresh" oncommand="reloadTree('tree')" />
 <tree id="tree" flex="1" flags="dont-build-content" ref="urn:data:row" datasources="rdf:null">
  <treecols>
    <treecol id="id" label="Id" primary="true" flex="1"
      class="sortDirectionIndicator" sortActive="true"
      sortDirection="ascending"
      sort="rdf:http://dummy/rdf#id"/>
   <splitter class="tree-splitter"/>
   <treecol id="name" label="Name" flex="1"
     class="sortDirectionIndicator" sortActive="false"
     sortDirection="ascending"
     sort="rdf:http://dummy/rdf#name"/>
  </treecols>
  <template>
    <treechildren>
      <treeitem uri="rdf:*">
        <treerow>
          <treecell label="rdf:http://dummy/rdf#id"/>
          <treecell label="rdf:http://dummy/rdf#name"/>
        </treerow>
      </treeitem>
    </treechildren>
  </template>
 </tree>
 <statusbar flex="1"><statusbarpanel flex="1" id="out" label=""/></statusbar>
 </window>

create_rdf.php :

 <?php
 define('EOL', "\r\n");
 function XML_entities($str)
 {
   return preg_replace(array("'&'", "'\"'"), array('&#38;', '&#34;'), $str);
 }
 // Connexion à la base de données
 $cnx=mysql_connect('localhost', 'root',  '');
 mysql_select_db('test',$cnx);
 // execution de la requète SQL
 $result = mysql_query('SELECT * FROM sample_tbl',$cnx);
 // on spécifie au navigateur le type mime des données qu'on va lui envoyé. Ici, c'est du RDF, dont text/xml.
 header('Content-type: text/xml');
 // on commence à lui envoyer le début du fichier RDF
 echo('<?xml version="1.0" encoding="ISO-8859-1"?>'.EOL);
 echo('<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"'.EOL);
 echo('  xmlns:row="http://dummy/rdf#">'.EOL);
 echo('<RDF:Bag about="urn:data:row">'.EOL);
 // boucle de récupération des enregistrements de la requête et génération du contenu RDF
 while ($row = mysql_fetch_assoc($result))
   {
     echo('<RDF:li>'.EOL);
     echo('<RDF:Description>');
     foreach ($row as $field_name => $field_value)
     {
       echo('<row:'.$field_name.'>'.XML_entities($field_value).'</row:'.$field_name.'>');
     }
     echo('</RDF:Description>'.EOL);
     echo('</RDF:li>'.EOL);
   }
 // fin du fichier RDF
 echo('</RDF:Bag>'.EOL);
 echo('</RDF:RDF>'.EOL);
 // fermeture du curseur et de la connexion
 mysql_free_result($result);
 mysql_close($cnx);
 ?>

# Re: un script de "http://localhost" c'est vu refuser des privilèges UniversalXPConnect

Envoyé par : Julien Appert

Date : 10/06/2005 10:05

es-tu allé mettre, dans about:config, le signed.applets.codebase_principal_support sur true ?

# Re: un script de "http://localhost" c'est vu refuser des privilèges UniversalXPConnect

Envoyé par : laurentj

Date : 10/06/2005 11:32

Julien : y a pas besoin de ça dans des versions récentes, comme il est précisé en bas de la page /wiki/ApplisWeb/ExemplePhpRdf.

Gimlith : tu teste sur le site la version pour Firefox > 0.8, mais tu as installé en locale la version pour Firefox < 0.8 !

Si tu regarde bien le source de l'exemple 2, tu remarqueras que le code javascript n'est plus du tout le même, et beaucoup plus simple..

Je vais mettre à jour la page /wiki/ApplisWeb/ExemplePhpRdf...

# Re: un script de "http://localhost" c'est vu refuser des privilèges UniversalXPConnect

Envoyé par : Julien Appert

Date : 10/06/2005 11:51

Il me semblait bien aussi que le code n'était pas le même...

Julien : y a pas besoin de ça dans des versions récentes, comme il est précisé en bas de la page /wiki/ApplisWeb/ExemplePhpRdf.

Arf, je ne m'en étais même pas rendu compte. Faut que j'arrête de le faire automatiquement à chaque installation alors ;o)

# Re: un script de "http://localhost" c'est vu refuser des privilèges UniversalXPConnect

Envoyé par : Utilisateur anonyme

Date : 10/06/2005 12:43

Ca marche ... je ne m'explique toujours pas comment d'un serveur a un autre cette partie de la config doit être a true mais ca marche (j'ai même repiqué le bouton ajouté du site et j'ai ecris un bout de code qui me rentre bien de nouveaux noms dans la bdd mysql) donc si quelqu'un sait expliquer pourquoi sur xulfr.org ca marche en ayant signed.applets.codebase_principal_support a false alors qu'en local il me le faut a true ce serait wondertop car je vais avoir du mal a faire configurer cette options a tous mes postes déportés (en espérant que je finisse cette appli un jour bien entendus)

# Re: un script de "http://localhost" c'est vu refuser des privilèges UniversalXPConnect

Envoyé par : laurentj

Date : 10/06/2005 12:49

car je vais avoir du mal a faire configurer cette options a tous mes postes déportés

Non, il ne faut surtout pas ! C'est un trou de sécurité !

Je suis en train de retoucher les exemples. Y a des trucs qui ne fonctionnent plus chez moi (la mise à jour : firefox reprend toujours le rdf mis en cache, et je n'arrive plus à ajouter des items :-/ ).

# Re: un script de "http://localhost" c'est vu refuser des privilèges UniversalXPConnect

Envoyé par : Utilisateur anonyme

Date : 10/06/2005 12:54

désolé la réponse n'est pas dans l'ordre cela dit éffectivement ce n'était pas claire du coté des sources différentes. maintenant ca roule et sans aucun pb et comme je suis passé par l'affichage des sources de a page du site j'en est profité pour ecrire le bout de code pour ajouter un nom et il fonctionne. si avec un exemple comme celui le je ne m'en sort pas !!!

Merci beaucoup et que le xul soit avec vous (and the xul be with you).

# Re: un script de "http://localhost" c'est vu refuser des privilèges UniversalXPConnect

Envoyé par : laurentj

Date : 10/06/2005 14:42

Ca y est, j'ai mis à jour les exemples et la page. Tout semble fonctionner correctement.

Dans l'exemple avançé, j'ai rajouté un bouton "supprimer".

Le tout est dans un zip téléchargeable.

revoir donc la page /wiki/SourceDeDonneesRdf

a+

# Re: un script de "http://localhost" c'est vu refuser des privilèges UniversalXPConnect

Envoyé par : Lapinator

Date : 10/06/2005 16:05

Je profite en passant que le W3C a crée un RDF validator http://www.w3.org/RDF/Validator/, qui permet de testé les RDFs s'il sont correct :)

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.