6
votes

Comment contourner les limitations de document.Domain lors de l'ouverture de fichiers locaux?

J'ai un ensemble de fichiers HTML à l'aide de JavaScript pour générer des outils de navigation, l'indexation, la table, etc. Ces fichiers ne sont destinés que localement (par exemple, fichier: //) et non servi sur un serveur Web. Depuis Firefox 3.x, nous rencontrons l'erreur suivante lorsque vous cliquez sur un bouton NAV qui générerait une nouvelle image pour la TOC:

Error: Permission denied for <file://> to get property Location.href from <file://>.


0 commentaires

5 Réponses :


1
votes

dans Firefox:

  1. Dans la barre d'adresse, type à propos de: config, li>
  2. Tapez ensuite Network.Automatic-NTLM-Auth.Trusted-URIS em> dans la barre de recherche li>
  3. Entrez la liste séparée des virgules de serveurs (c'est-à-dire intranet, maison, entreprise) li> ol>

    Autre moyen est d'éditer les utilisateurs.js. p>

    in users.js, écrire: p> xxx pré>

    mais si vous voulez Arrêtez toute vérification, écrivez simplement la ligne suivante dans les utilisateurs.js Fichier: P>

    user_pref("capability.policy.default.checkloaduri.enabled", "allAccess");
    


3 commentaires

Cela semble être ce que vous feriez pour les fichiers servis sur des serveurs, mais qu'en est-il d'accéder via un fichier: // où il n'y a pas de domaine?


Cette solution est destinée aux cas où vous avez un site Web (hébergé quelque part) et il doit lire certains fichiers dans le disque dur du client. Une autre solution est désactivée cette politique (j'ai édité ma réponse avec comment faire cela) - I Holpe que vous comprenez :)


Cela ne fonctionne pas pour moi sous Firefox 11. J'ai utilisé User.js dans le répertoire de profil correct et j'ai essayé directement de l'entrer à propos de: config. L'URL est "http: // localhost".



0
votes

La méthode de Cleiton fonctionnera pour vous-même ou pour tous les utilisateurs que vous attendez passera par ce processus manuel (peu probable que ceci est un outil pour vous et vos collègues ou quelque chose).

J'espère que ce type de chose serait pas être possible, car si tel est le cas, cela signifie que tout site existe peut commencer à ouvrir des documents sur ma machine et à lire leur contenu. < / p>


0 commentaires

0
votes

Vous pouvez avoir tous les fichiers que vous souhaitez accéder aux sous-dossiers par rapport à la page qui effectue la demande.

Vous pouvez également utiliser JSONP pour charger des fichiers de n'importe où.


2 commentaires

JSONP peut-il fonctionner pour le protocole de fichiers? Ce n'est pas une rhétorique; Je suis en fait curieux.


Si vos données sont au fichier: //mydata.jsonp et il ressemble à Callback = {Données: "Bonjour"} Vous pouvez utiliser JSONP pour demander ces données.



-1
votes

Ajouter "Fichier: //" à Network.Automatic-NTLM-Auth.Trusted-URIS dans environ: config


0 commentaires

1
votes

Vous pouvez l'utiliser dans Firefox pour lire le fichier.

function readFile(arq) {
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
        file.initWithPath(arq);

        // open an input stream from file  
        var istream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
        istream.init(file, 0x01, 0444, 0);
        istream.QueryInterface(Components.interfaces.nsILineInputStream);  
        var line = {}, lines = [], hasmore;  
        do {  
          hasmore = istream.readLine(line);  
          lines.push(line.value);   
        } while(hasmore);  
        istream.close();  
        return lines;
    }


0 commentaires