Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cross-origin image load denied with three.js in chrome

Tags:

Trying to add material in THREE.js like this

var materialWall = new materialClass( { color: 0xffffff, map: THREE.ImageUtils.loadTexture( 'images/a.png' ) } );

It works fine in Chrome, IE, FF, until 3 days ago, after Chrome updated itself to the latest dev version 17.

Chrome 17 just doesn't load the image and complains the following

Cross-origin image load denied by Cross-Origin Resource Sharing policy.

That's insane since the image is clearly in the same domain, so is this an issue of chrome or THREE.js or something else?

like image 842
NamiW Avatar asked Nov 05 '11 04:11

NamiW


2 Answers

If you are running Chrome from localhost and using Three.js, you probably need to run Chrome with this command line flag:

c:// ... /chrome.exe --allow-file-access-from-files
like image 91
Orbiting Eden Avatar answered Oct 09 '22 15:10

Orbiting Eden


https://github.com/mrdoob/three.js/issues/687 refers to an issue on three.js' GitHub, which has good list of workarounds, including a link to a wiki page describing how to run locally. There are also some other workarounds in the thread, including adding the following to your scripts:

THREE.ImageUtils.crossOrigin = "";

Or, adding CORS headers so that they are specifically allowed.

Note that most of this information was added from the already existing link to the issue, which the original author of this answer did not include.

like image 21
Mr.doob Avatar answered Oct 09 '22 15:10

Mr.doob