Это сводит меня с ума. Я гуглил / прогнал / altavistad (не совсем!), Но не смог добиться значительного прогресса. У меня есть скрипт для загрузки текстуры на сферу.

var loader = new THREE.TextureLoader();

//allow cross origin loading
loader.crossOrigin = '';
loader.load(window.photo_url,
// Function when resource is loaded
  function ( texture ) { 
    sphereMaterial.map = texture;
    var sphereMesh = new THREE.Mesh(sphere, sphereMaterial);
    scene.add(sphereMesh);
    // Start the update frame part
    requestAnimationFrame(update);
  }
)

Window.photo_url установлен в другом фрагменте кода. Моя корзина S3 в настоящее время имеет наиболее приемлемую конфигурацию CORS

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <AllowedHeader>Content-*</AllowedHeader>
        <AllowedHeader>Host</AllowedHeader>
        <AllowedHeader>origin</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

Однако это не работает согласованно и время от времени дает ошибку, связанную с COR. Страница работает на Chrome и Safari на моем ноутбуке. Однако на моем телефоне он работает на Chrome, но не работает на Safari. На другом телефоне страница не работает ни в Chrome, ни в Safari. Интересно, что на той же странице у меня загружаются изображения с использованием image_tag из того же сегмента s3, и они появляются. На самом деле одно из изображений - это то, которое я пытаюсь использовать в приведенном выше сценарии, и при получении с использованием image_tag оно отображается нормально.

Кто-нибудь сталкивался с подобными проблемами? Есть идеи?

0
Bharat Ahluwalia 8 Янв 2017 в 06:53

3 ответа

Лучший ответ

Поэтому, покопавшись еще немного, я написал простой прокси на своем сервере.

0
Bharat Ahluwalia 14 Янв 2017 в 18:39

Чтобы проверить, вместо использования подстановочного знака * попробуйте указать источник в разрешении. например : { { Х1 } } .

Браузер блокирует JavaScript от разрешения GET/PUT/DELETE/POST запросов в случае, если домен не совпадает для запросов API.

Однако изображения, загружаемые с помощью тега <img>, не ограничены, и в значительной степени могут запрашивать изображения из любого места в Интернете. То же самое применяется для загрузки ресурсов, таких как внешние файлы CSS / JavaScript.

0
Aniket Sinha 8 Янв 2017 в 18:28

В основном попробуйте изменить загрузчик на:

loader.setCrossOrigin( "anonymous" );
0
Lior Trau 9 Янв 2017 в 08:51