J'essaie de charger un modèle 3D dans Three.js avec JSONLoader
, et ce modèle 3D se trouve dans le même répertoire que l'ensemble du site Web.
Je reçois l' "Cross origin requests are only supported for HTTP."
erreur, mais je ne sais pas ce qui la cause ni comment y remédier.
Réponses:
Ma boule de cristal indique que vous chargez le modèle à l'aide de
file://
ouC:/
, ce qui reste fidèle au message d'erreur car ils ne le sont pashttp://
Vous pouvez donc soit installer un serveur Web sur votre PC local, soit télécharger le modèle ailleurs et utiliser
jsonp
et modifier l'URL enhttp://example.com/path/to/model
L'origine est définie dans la RFC-6454 comme
Ainsi, même si votre fichier provient du même hôte (
localhost
), mais tant que le schéma est différent (http
/file
), ils sont traités comme une origine différente.la source
file://
, mais je ne comprends pas pourquoi c'est permis. Eh bien, j'installe Lampp, je suppose ...load('file://C:/users/user/supersecret.doc')
, puis téléchargez le contenu sur leur serveur en utilisant ajax etc.Juste pour être explicite - Oui, l'erreur dit que vous ne pouvez pas pointer votre navigateur directement vers
file://some/path/some.html
Voici quelques options pour faire tourner rapidement un serveur Web local pour permettre à votre navigateur de rendre des fichiers locaux
Python 2
Si vous avez installé Python ...
Changez le répertoire dans le dossier où votre fichier
some.html
ou vos fichiers existent à l'aide de la commandecd /path/to/your/folder
Démarrez un serveur Web Python à l'aide de la commande
python -m SimpleHTTPServer
Cela démarrera un serveur Web pour héberger l'intégralité de votre liste d'annuaire sur
http://localhost:8000
python -m SimpleHTTPServer 9000
vous donnant un lien:http://localhost:9000
Cette approche est intégrée à toute installation Python.
Python 3
Suivez les mêmes étapes, mais utilisez plutôt la commande suivante
python3 -m http.server
Node.js
Alternativement, si vous exigez une configuration plus réactive et utilisez déjà nodejs ...
Installer
http-server
en tapantnpm install -g http-server
Changez dans votre répertoire de travail, où votre
some.html
vieDémarrez votre serveur http en émettant
http-server -c-1
Cela fait tourner un httpd Node.js qui sert les fichiers de votre répertoire en tant que fichiers statiques accessibles à partir de
http://localhost:8080
Rubis
Si votre langue préférée est le rubis ... les dieux du rubis disent que cela fonctionne aussi:
PHP
Bien sûr, PHP a également sa solution.
la source
$ python -m SimpleHTTPServer
, ce qui produit le message:Serving HTTP on 0.0.0.0 port 8000 ...
Si vous épelez le nom du module incorrectement, par exemple,$ python -m SimpleHttpServer
vous obtiendrez le message d'erreurNo module named SimpleHttpServer
Vous obtiendrez un message d'erreur similaire si vous avez python3 installé (v. python 2.7). Vous pouvez vérifier votre version de Python en utilisant la commande:$ python --version
. Vous pouvez également spécifier le port d'écoute comme ceci:$ python -m SimpleHTTPServer 3333
$ cd ~/angular_projects/1app
, alors$ python -m SimpleHTTPServer
. Dans votre navigateur, entrez l'URLhttp://localhost:8000/index.html
. Vous pouvez également demander des fichiers dans les sous-répertoires du répertoire où vous avez démarré le serveur, par exemplehttp://localhost:8000/subdir/hello.html
Dans Chrome, vous pouvez utiliser ce drapeau:
En savoir plus ici.
la source
--allow-file-access-from-files
). Cela signifie utiliser Chrome pour la navigation Web courante et utiliser Chromium comme application par défaut pour les fichiers HTML.fetch()
cela nie quand même. Vous devez utiliserXMLHttpRequest
d'une certaine manièreCourez-y aujourd'hui.
J'ai écrit du code qui ressemblait à ceci:
... mais cela aurait dû ressembler à ceci:
La seule différence était l'absence de
http://
dans le deuxième extrait de code.Je voulais juste mettre cela là-bas au cas où d'autres personnes auraient un problème similaire.
la source
Remplacez simplement l'URL par au
http://localhost
lieu delocalhost
. Si vous ouvrez le fichier html depuis local, vous devez créer un serveur local pour servir ce fichier ht, la manière la plus simple est d'utiliserWeb Server for Chrome
. Cela résoudra le problème.la source
Web Server for Chrome
lien de l'application - c'est de loin la solution la plus simple et la plus propre pour la configuration temporaire de httpd pour Chrome IMODans une application Android - par exemple, pour permettre à JavaScript d'avoir accès aux actifs via
file:///android_asset/
- utilisezsetAllowFileAccessFromFileURLs(true)
leWebSettings
que vous obtenez en appelantgetSettings()
leWebView
.la source
Utilisez
http://
ouhttps://
pour créer une URLerreur :
localhost:8080
solution :
http://localhost:8080
la source
le moyen le plus rapide pour moi était: pour les utilisateurs de Windows, exécutez votre fichier sur Firefox, le problème est résolu, ou si vous voulez utiliser le moyen le plus simple pour moi, installer Python 3, puis à partir de l'invite de commande, exécuter la commande,
python -m http.server
puis accédez à http: // localhost: 8000 / puis accédez à vos fichiersla source
Je vais énumérer 3 approches différentes pour résoudre ce problème:
npm
package très léger : installez live-server à l' aide denpm install -g live-server
. Ensuite, allez dans ce répertoire, ouvrez le terminal et tapezlive-server
et appuyez sur Entrée, la page sera servie àlocalhost:8080
. BONUS: Il prend également en charge le rechargement à chaud par défaut.target
à"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/ChromeDevSession"
et enregistrer. Ensuite, en utilisant Chrome, ouvrez la page en utilisantctrl+o
. REMARQUE: N'utilisez PAS ce raccourci pour une navigation régulière.la source
Pour ceux sous Windows sans Python ou Node.js, il existe toujours une solution légère: Mongoose .
Tout ce que vous faites est de faire glisser l'exécutable à l'emplacement de la racine du serveur et de l'exécuter. Une icône apparaîtra dans la barre des tâches et elle accédera au serveur dans le navigateur par défaut.
De plus, Z-WAMP est un WAMP 100% portable qui s'exécute dans un seul dossier, c'est génial. C'est une option si vous avez besoin d'un serveur PHP et MySQL rapide.
la source
Si vous utilisez Mozilla Firefox, cela fonctionnera comme prévu sans aucun problème;
PS Étonnamment, IntenetExplorer_Edge fonctionne parfaitement bien !!!
la source
Solution simple pour qui utilise VS Code
Je reçois cette erreur depuis un moment. La plupart des réponses fonctionnent. Mais j'ai trouvé une solution différente. Si vous ne voulez pas traiter
node.js
ou toute autre solution ici et que vous travaillez avec un fichier HTML (appelant des fonctions à partir d'un autre fichier js ou récupérant des api json), essayez d'utiliser l' extension Live Server .Il vous permet d'ouvrir facilement un serveur en direct. Et à cause de cela crée un
localhost
serveur, le problème se résout. Vous pouvez simplement démarrer lelocalhost
en ouvrant un fichier HTML et faites un clic droit sur l'éditeur et cliquez surOpen with Live Server
.Il charge essentiellement les fichiers en utilisant
http://localhost/index.html
au lieu d'utiliserfile://...
.ÉDITER
Il n'est pas nécessaire d'avoir un
.html
fichier. Vous pouvez démarrer Live Server avec des raccourcis.J'espère que cela aidera quelqu'un :)
la source
J'obtenais cette erreur exacte lors du chargement d'un fichier HTML sur le navigateur qui utilisait un fichier json à partir du répertoire local. Dans mon cas, j'ai pu résoudre ce problème en créant un simple serveur de nœuds qui permettait de gérer du contenu statique. J'ai laissé le code pour cela à cette autre réponse .
la source
Je vous suggère d'utiliser un mini-serveur pour exécuter ce genre d'applications sur localhost (si vous n'utilisez pas de serveur intégré).
En voici une qui est très simple à configurer et à exécuter:
la source
Je soupçonne que c'est déjà mentionné dans certaines des réponses, mais je vais légèrement le modifier pour avoir une réponse complète (plus facile à trouver et à utiliser).
Accédez à: https://nodejs.org/en/download/ . Installez nodejs.
Installez le serveur http en exécutant la commande à partir de l'invite de commande
npm install -g http-server
.Accédez à votre répertoire de travail, où
index.html
/yoursome.html
réside.Démarrez votre serveur http en exécutant la commande
http-server -c-1
Ouvrez le navigateur Web vers
http://localhost:8080
ouhttp://localhost:8080/yoursome.html
- selon votre nom de fichier html.la source
Il indique simplement que l'application doit être exécutée sur un serveur Web. J'ai eu le même problème avec Chrome, j'ai démarré Tomcat et déplacé mon application là-bas, et cela a fonctionné.
la source
euh. Je viens de trouver des mots officiels "Tenter de charger des modules AMD distants non construits qui utilisent le plugin dojo / text échouera en raison de restrictions de sécurité d'origine croisée. (Les versions construites des modules AMD ne sont pas affectées car les appels à dojo / text sont éliminés par le système de construction.) " https://dojotoolkit.org/documentation/tutorials/1.10/cdn/
la source
Une façon dont cela a fonctionné en chargeant des fichiers locaux est de les utiliser avec dans le dossier du projet au lieu de l'extérieur de votre dossier de projet. Créez un dossier sous vos fichiers d'exemple de projet similaire à la façon dont nous créons pour les images et remplacez la section où vous utilisez un chemin local complet autre que le chemin du projet et utilisez l'url relative du fichier sous le dossier du projet. Ça a marché pour moi
la source
Pour tout le monde
MacOS
... configurez un LaunchAgent simple pour activer ces fonctionnalités glamour dans votre propre copie de Chrome ...Enregistrez un
plist
, nommé n'importe quoi (launch.chrome.dev.mode.plist
, par exemple)~/Library/LaunchAgents
avec un contenu similaire à ...Il devrait se lancer au démarrage .. mais vous pouvez le forcer à le faire à tout moment avec la commande terminal
launchctl load -w ~/Library/LaunchAgents/launch.chrome.dev.mode.plist
TADA! 😎 💁🏻 🙊 🙏🏾
la source
Démarrez le serveur d'applications et vous devriez pouvoir accéder au fichier depuis localhost
la source
Impossible de charger des fichiers locaux statiques (par exemple: svg) sans serveur. Si NPM / YARN est installé sur votre machine, vous pouvez configurer un serveur http simple en utilisant " http-server "
la source
Beaucoup de problème pour cela, avec mon problème est manquant '/' exemple: jquery-1.10.2.js: 8720 XMLHttpRequest ne peut pas charger http: // localhost: xxxProduct / getList_tagLabels / Il doit être: http: // localhost: xxx / Product / getList_tagLabels /
J'espère que cette aide pour qui rencontre ce problème.
la source
J'ai également pu recréer ce message d'erreur lors de l'utilisation d'une balise d'ancrage avec le href suivant:
Dans mon cas, une balise était utilisée pour obtenir le «curseur du pointeur» et l'événement était en fait contrôlé par un événement jQuery on click. J'ai supprimé le href et ajouté une classe qui s'applique:
la source
Pour les utilisateurs de Linux Python:
la source
google-chrome --allow-file-access-from-files <url>
ne pas travailler et d'être plus concis?Si vous insistez pour exécuter le
.html
fichier localement et ne pas le servir avec un serveur Web, vous pouvez empêcher ces demandes d'origine croisée de se produire en premier en rendant les ressources problématiques disponibles en ligne.J'ai eu ce problème en essayant de servir des
.js
fichiersfile://
. Ma solution était de mettre à jour mon script de construction pour remplacer les<script src="...">
balises par<script>...</script>
. Voici unegulp
approche pour ce faire:1. exécuter
npm install --save-dev
des packagesgulp
,gulp-inline
etdel
.2. Après avoir créé un
gulpfile.js
dans le répertoire racine, ajoutez le code suivant (changez simplement les chemins de fichier pour ce qui vous convient):gulp bundle-for-local
ou mettez à jour votre script de génération pour l'exécuter automatiquement.Vous pouvez voir le problème détaillé et la solution de mon cas ici .
la source
Cordova y parvient. Je n'arrive toujours pas à comprendre comment Cordova a fait. Il ne passe même pas par shouldInterceptRequest.
Plus tard, j'ai découvert que la clé pour charger n'importe quel fichier à partir du local est: myWebView.getSettings (). SetAllowUniversalAccessFromFileURLs (true);
Et lorsque vous souhaitez accéder à n'importe quelle ressource http, la vue Web vérifie avec la méthode OPTIONS, que vous pouvez accorder l'accès via WebViewClient.shouldInterceptRequest en renvoyant une réponse, et pour la méthode GET / POST suivante, vous pouvez simplement renvoyer null.
la source
fermez d'abord toutes les instances de chrome.
après cela, suivez ceci.
J'ai utilisé cette commande sur mac.
"/ Applications / Google Chrome.app/Contents/MacOS/Google Chrome" - autorisez l'accès aux fichiers à partir des fichiers
Pour les fenêtres:
Comment lancer html en utilisant Chrome en mode "--allow-file-access-from-files"?
la source
J'ai vécu cela lorsque j'ai téléchargé une page pour une vue hors ligne.
Je viens de supprimer les attributs
integrity="*****"
etcrossorigin="anonymous"
de tous les tags<link>
et<script>
la source