2015-11-13 46 views
-1

这让我感到非常紧张。我正试图让我的天空盒与从互联网上获得的图像一起工作。我的代码:加载天空盒的图像的跨域问题

为全局变量:

var path = "file:///C:/Users/Tyler/Desktop/ComS_336_workspace/"; 
    var imageNames = [ 
         path + "meadow_bk.jpg", 
         path + "meadow_ft.jpg", 
         path + "meadow_up.jpg", 
         path + "meadow_dn.jpg", 
         path + "meadow_rt.jpg", 
         path + "meadow_lf.jpg" 
         ]; 

在主要功能:

// load the six images 
     //THREE.ImageUtils.crossOrigin = "Anonymous"; 
     var ourCubeMap = THREE.ImageUtils.loadTextureCube(imageNames); 

但得到这个错误:

DOMException: Failed to execute 'texImage2D' on 'WebGLRenderingContext': The cross-origin image at file:///C:/Users/Tyler/Desktop/ComS_336_workspace/meadow_ft.jpg may not be loaded. 

当我加入THREE.ImageUtils .crossOrigin =“匿名”;我得到这个错误:

Image from origin 'file://' has been blocked from loading by Cross-Origin Resource Sharing policy: Invalid response. Origin 'null' is therefore not allowed access. 

我看到一些帖子说要与运行铬--allow-文件存取的档案或什么,但不想冒险任何安全问题。然后,我看到别人说把图像放在网络服务器上?这我完全不知道该怎么做,为什么这一点很复杂?

我的HTML和JS文件是在同一文件夹(ComS_336_workspace)作为我的图片。

,我真的很需要做什么帮助,如果我必须做一个网络服务器,我怎么把我的图片上他们和路径设置为我的图片?我没有得到。

+0

“我真的很需要做什么帮助” - 你已经说过你必须做的:主机您的Web站点的Web服务器上。 – Quentin

+0

“我必须做一个网络服务器,我如何把他们的图像放在他们身上,并为我的图像设置路径?” - 选择一个Web服务器。安装它。按照其说明操作。 – Quentin

回答

0

为了解决这个问题,你需要或者远程文件保存到您的网站或使用一些代理脚本,从您的网站(例如PHP)通过你的网站获得的图像。

反正你需要一个fully qualified domain name摆脱兼容CORS-错误。从file:///载入webgl和图像将不起作用。

+0

任何有关投票正确答案的评论? – kaigorodov

0

你用什么来编辑你的代码?如果您尝试从台式机上运行该页面进行测试,那么我会推荐brackets.io

它的伟大,自由,将让你周围的CORS问题,为你打造你的代码了。