2017-06-15 2 views
0

Je travaille sur un projet cross plate-forme (html5) à lancer sur Android et iOS plus tard et j'ai eu un problème avec getJSON pour charger des données à partir d'un fichier .json localement sur le navigateur chrome. Lorsque vous appelezErreur avec getJSON pour charger le fichier de données json localement sur chrome

jQuery.getJSON("layout.json", this.onLoaded); 

Je reçois

Error: XMLHttpRequest cannot load file:///E:/app/layout.json. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https`

à jquery-3.2.1.js: 9566 qui est: xhr.send(options.hasContent && options.data || null);

J'ai surfé sur Internet à la recherche de solutions et est venu avec ces deux solutions qui ne fonctionnent pas dans mon cas:

  1. Activation du contrôle d'accès-autorisation-origine manuellement sur le chrome
  2. Téléchargez les fichiers de projet sur un serveur

Je suis à la recherche d'une solution pour charger les données JSON localement.

Votre aide est grandement appréciée!

+0

Veuillez ajouter des exemples de code de votre projet pour obtenir de l'aide. – arturkin

+0

1. utiliser 'HBuilder' cet Eclipse clone IDE et voir les fichiers locaux automatiquement dans un serveur web local ou 2. fil JSON comme fichier js et le changer quand vous l'utilisez dans les environnements de production –

+0

@arturkin voici l'exemple de code et le erreur que j'ai eu: jQuery.getJSON ("layout.json", this.onLoaded); Erreur: XMLHttpRequest ne peut pas charger le fichier: /// E: Les demandes d'origine croisée ne sont prises en charge que pour les schémas de protocole: http, data, chrome, chrome-extension, https. jquery-3.2.1.js: 9566 qui est: xhr.send (options.hasContent && options.data || null); – Mahmoud

Répondre

1

cette extension chrome m'a aidé avec le même problème en chrome, vérifier allow-Control-Allow-origine: *

+0

Merci jNg. Oui, cela fonctionne bien, mais je travaille sur un projet multi-plateforme, y a-t-il une alternative dans ce cas? Puis-je autoriser cette politique de chrome en utilisant un javascript? – Mahmoud

+0

Je ne peux pas le dire, mais je vais faire quelques recherches – Jonathan

1

Je ne pense pas qu'il y ait une solution multi-navigateur, car il est une sécurité mesure pour protéger les données de l'utilisateur et les verndors des navigateurs bloquent cela par intention. Dans Chrome, vous pouvez utiliser l'option --allow-file-access-from-files lors du lancement, mais ce n'est pas une chose qu'un utilisateur ordinaire acceptera et il n'y a pas moyen de limiter cette préférence pour certains fichiers seulement, d'où des problèmes de sécurité.

encore, si vous créez un serveur local, mettre le fichier que vous voulez charger et la page qui est de charger le fichier sur le serveur, cela devient possible. C'est tout à fait possible, il y a un certain nombre de serveurs locaux pour Android et probablement pour d'autres systèmes d'exploitation. PS vous pouvez également créer une extension de navigateur.

PS Depuis les extensions Chrome sont supportés par de nombreux navigateurs ces jours-ci (Opera, Vivaldi, Yandex etc) et même par FireFox, il peut être une option intéressante. Mais vous devez apprendre les limites exactes des extensions, je ne suis pas un expert dans ce domaine.