在threejs中,我使用以下代码从amazon s3加载图像:
var loader = new THREE.TextureLoader();
loader.setCrossOrigin('');
loader.load(image_url,
function ( texture ) {
// do something with the texture
var sphere = new THREE.Mesh(
new THREE.SphereGeometry(radius, 20, 20),
new THREE.MeshBasicMaterial({
map: texture
})
);
sphere.scale.x = -1;
scene.add(sphere);
},
// Function called when download progresses
function ( xhr ) {
// console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );
},
// Function called when download errors
function ( xhr ) {
console.log( 'An error happened' );
}
);
在亚马逊s3存储桶上,我还配置了CORS,它允许所有来源发送跨源请求
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
根据类似问题的一些问题,我只需要设置 loader.setCrossOrigin('') ;
但它不起作用。 CORS的错误仍然存在。
XMLHttpRequest cannot load https://s3-ap-southeast-1.amazonaws.com/.../test_image.jpg
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
我正在使用最新版本的ThreeJS 有人可以帮忙吗?感谢您的支持。
似乎我之前在AS3上传的照片仍然受旧CORS设置的影响,该设置不允许发送交叉原始请求。
所以,我删除旧照片 - &gt;上传新问题解决了。
答案 0 :(得分:0)
打开你的config.php并找到你的基本网址......
如果你这样写http://yoururl
像http://www.yoururl.com
希望它的工作这个简单的解决方案! ;)