La croix-origine du chargement de l'image refusée avec three.js dans chrome
Essayer d'ajouter de la matière dans THREE.js
comme ce
var materialWall = new materialClass( { color: 0xffffff, map: THREE.ImageUtils.loadTexture( 'images/a.png' ) } );
Il fonctionne très bien sur Chrome, IE, FF, jusqu'à 3 jours, après Chrome mis à jour pour la dernière dev de la version 17.
Chrome 17 juste ne charge pas l'image et qui se plaint de l'suivantes
Cross-origin image load denied by Cross-Origin Resource Sharing policy.
C'est fou, car l'image est clairement dans le même domaine, alors est-ce un problème de chrome ou THREE.js ou quelque chose d'autre?
Vous devez vous connecter pour publier un commentaire.
https://github.com/mrdoob/three.js/issues/687 se réfère à une question sur three.js' GitHub, qui a une bonne liste de solutions, y compris un lien vers une page wiki décrivant comment l'exécuter localement. Il existe aussi d'autres solutions de contournement dans le fil, y compris l'ajout de ce qui suit dans vos scripts:
Ou, en ajoutant de la SCRO en-têtes, de sorte qu'ils sont spécifiquement autorisées.
Notez que la plupart de ces informations ont été ajoutés à partir de l'existant lien à la question, à laquelle l'auteur original de cette réponse ne comprennent pas.
Si vous exécutez google Chrome à partir de localhost et à l'aide de Three.js, vous avez probablement besoin de courir Chrome avec cette option de ligne de commande:
Si vous:
puis j'ai travaillé sur un moyen de contourner ce qui implique seulement un peu d'effort:
Tous les détails peuvent être trouvés à http://tp69.wordpress.com/2013/06/17/cors-bypass/ pour ceux qui sont intéressés.
Vous pouvez également exécuter un simple serveur HTTP à l'aide de python en exécutant la commande suivante à partir de la racine de votre dossier.
1) Chrome raccourci -> Propriétés -> onglet Raccourci -> cible et
ajouter --allow-file-access-de-fichiers dans la cible au dernier. (tuer tous les chrome tâches avant de faire cela.
OU
2) Télécharger Mangouste serveur web logiciel. Mettre dans votre répertoire de travail, et
l'exécuter. Il s'ouvrira dans le navigateur http://localhost:PORT où il sera au service de tous vos fichiers.
OU
3) Vous pouvez également utiliser serveur NodeJS dans votre application.
cela a fonctionné pour moi sur la ligne de commande\terminal:
*notez que vous devez fermer toutes les instances de chrome avant l'exécution de la commande pour que cela fonctionne.
Solution idéale pour:
Juste ajouter timestamp à l'url de l'image. Je ne sais pas la logique derrière tout cela, mais il fonctionne.
Exemple: