THREE.js GLTFLoader CORS ошибка как включить CORS?

привет, я пытаюсь загрузить модель GLTF с помощью GLTFLoader THREE.js, я получаю ошибку CORS (не присутствует access-control-allowed-origin ..) Я также извлекаю из ведра s3 другие активы, и все работает, за исключением GLTF, поэтому я предполагаю, что мне нужно передать некоторый флаг CORS в GLTFLoader. Сейчас:

    this.loader = new THREE.GLTFLoader();
    this.loader.load(avatar_path, gltf => {..})

Edit1: я уже пробовал:

   loader.setCrossOrigin( 'anonymous' ) 

а также

   loader.setCrossOrigin( 'use-credentials' ) 

безуспешно. всегда такая же ошибка CORS.


person cesarpachon    schedule 21.10.2019    source источник
comment
Используйте stackoverflow.com/posts/58490553/edit, чтобы отредактировать / обновить вопрос и вставить точное сообщение об ошибке, которое браузер вход в консоль devtools. Также укажите, включена ли поддержка CORS для корзины s3, из которой вы пытаетесь загрузить изображение.   -  person sideshowbarker    schedule 22.10.2019


Ответы (2)


Вам не нужно ничего устанавливать в three.js. Three.js автоматически запрашивает разрешения CORS при необходимости.

Скорее всего, это конфигурация сервера.

Откройте инструменты разработчика вашего браузера, перейдите на вкладку сети, перезагрузите страницу, посмотрите запрос и ответ для файла .gltf. Вы должны увидеть в «запросе» (от браузера) заголовок CORS и в ответе (от S3) заголовок «access-control-allow-origin: *». Я предполагаю, что в ответе сервера отсутствует заголовок, что означает, что ваш сервер настроен неправильно.

Просто предположение, но если работают изображения, загруженные в three.js, а не изображения на самой странице, поскольку им не требуется разрешение CORS), а фактические текстуры, тогда проблема в том, что ваш S3 настроен на отправку CORS только для определенных типов файлов. Если изображения, использующие текстуры, также не работают, проблема заключается в более простой конфигурации CORS.

Пример:

введите здесь описание изображения

person gman    schedule 22.10.2019

Сначала вам нужно настроить локальный веб-сервер на вашем компьютере, а затем вам нужно создать файл .php и записать в него следующий код: ‹? php header ("Access-Control-Allow-Header: *")?>, а затем включите этот файл в свой html-файл. у меня это сработало ... ????

person Abhishek Sharma    schedule 29.10.2019