THREE.TextureLoader加载图像失败“没有'Access-Control-Allow-Origin'标题是”

时间:2016-10-18 04:33:56

标签: amazon-s3 three.js cors cross-domain

在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;上传新问题解决了。

1 个答案:

答案 0 :(得分:0)

打开你的config.php并找到你的基本网址...... 如果你这样写http://yoururlhttp://www.yoururl.com

一样改变它

希望它的工作这个简单的解决方案! ;)