2017-06-08 4 views
0

別のエンティティをホバリングすると、location.scene_img_urlの値が変更されます(s3の場所)。 2回目の変更後、フレームはCOORSエラーで失敗します。Aフレームシーンを3回変更するとCOORS

<a-scene> 
    <a-sky ng-click="print()" src="{{location.scene_img_url}}" crossorigin="anonymous"></a-sky> 
</a-scene> 
+0

可能な重複Iからイメージをロードするときa-skyタグ内の別のサーバー](https://stackoverflow.com/questions/44001934/cors-error-when-i-load-image-from-another-server-inside-a-sky-tag) –

+0

@H .Pauwelyn私の問題は異なっています。私は最初のリソースを正常に取得します。新しいsrc値をトリガーする角度のGazeイベントを使用した後、COORSエラーが表示されます。 –

答えて

0

あなた自身でこの問題を発見しました。ここで私はどのように取り組みましたか。

外部アセット(s3バケットURL)を指すインラインURLを使用するのではなく、 aws-sdkを使用してイメージを要求します。イメージはバイト配列として受信されます。バイト配列をbase64に変換してレンダリングします。

相続人は、私はそれをやった方法を見:ここ

this.getImage = function(location, assetName) { 

    var creds = { 
    Bucket: 'YOURBUCKET-URL', 
    Key: "RELATIVE PATH" 
    } 

    return new Promise(function(resolve, reject) { 
    var image; 
    creds.Key += location + "/" + assetName; 

    s3.getObject(creds, function(err, data) { 
     if (!err) { 
     image = "data:image/jpeg;base64," + encode(data.Body); 
     resolve(image) 
     } else { 
     console.log(err) 
     reject(err); 
     } 
    }); 
    }) 
} 

がBASE64にバイト配列を変換するために、本当に素晴らしい方法です:[CORSエラーの

function encode(buffer) { 
    var binary = ''; 
    var bytes = new Uint8Array(buffer); 
    var len = bytes.byteLength; 
    for (var i = 0; i < len; i++) { 
    binary += String.fromCharCode(bytes[i]); 
    } 

    return window.btoa(binary); 
} 
関連する問題