901 votes

"Origine de la croix demandes sont prises en charge uniquement pour HTTP." erreur, mais je suis de chargement complètement un fichier local

Je suis en train de charger un modèle 3D dans Three.js avec le JSONLoader, et que le modèle 3D est dans le même répertoire que l'ensemble de mon site web.

Je suis de l' "Cross origin requests are only supported for HTTP." d'erreur, mais je ne sais pas quelle en est la cause, ni comment le résoudre.

Le JSONLoader peut-être besoin de le protocole HTTP?

852voto

SiGanteng Points 23915

Ma boule de cristal dit que vous chargez le modèle à l'aide soit d' file:// ou C:/, ce qui reste fidèle à la message d'erreur comme ils ne sont pas http://

Vous pouvez donc installer un serveur web sur votre ordinateur local ou télécharger le modèle de quelque chose et utiliser jsonp , et changer l'url d' http://example.com/path/to/model

673voto

Scott Stensland Points 993

Juste pour être plus explicite que ci - dessus, donc oui, vous ne pouvez pas pointer votre navigateur directement à file://some/path/some.html au lieu donc une fois que vous avez installé python cd dans le répertoire où votre some.html fichier(s) de vie puis le problème :

 python -m SimpleHTTPServer  

qui va faire tourner un serveur web hébergeant l'entièreté du dossier d'inscription qui vous référence à partir de l'URL :

http://localhost:8000

c'est intégré dans toute python installer (les piles sont incluses). Pour python3 utiliser ceci :

python3 -m http.server

Alternativement, si vous vous demande une plus réactive de l'installation et déjà utiliser nodejs et npm simplement question

npm install -g http-server

alors, comme ci-dessus, cd en dir contenant votre some.html et question :

http-server -c-1

qui lance une nodejs httpd qui fait un dir liste de vos fichiers statiques visible à partir de :

http://localhost:8080 

174voto

2astalavista Points 7092

Dans Chrome, vous pouvez utiliser ce drapeau:

--allow-file-access-from-files

En lire plus ici.

70voto

codenamejames Points 325

Couru aujourd'hui.

J'ai écrit un code qui ressemble à ceci:

app.controller('ctrlr', function($scope, $http){
    $http.get('localhost:3000').success(function(data) {
        $scope.stuff = data;
    });
});

...mais ça ressemblait à ça:

app.controller('ctrlr', function($scope, $http){
    $http.get('http://localhost:3000').success(function(data) {
        $scope.stuff = data;
    });
});

La seule différence, c'est le manque d' http:// dans le deuxième extrait de code.

Voulais juste mettre ça au cas où il y a d'autres personnes avec un problème similaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X