Я пытаюсь загрузить 3D-модель в Three.js JSONLoader
, и эта 3D-модель находится в том же каталоге, что и весь веб-сайт.
Я получаю сообщение об "Cross origin requests are only supported for HTTP."
ошибке, но я не знаю, что его вызывает, и как это исправить.
Ответы:
Мой хрустальный шар говорит, что вы загружаете модель, используя либо
file://
илиC:/
, что остается верным сообщению об ошибке, поскольку они неhttp://
Таким образом, вы можете либо установить веб-сервер на локальном ПК, либо загрузить модель в другое место и использовать
jsonp
и изменить URL-адрес наhttp://example.com/path/to/model
Происхождение определено в RFC-6454 как
Таким образом, даже если ваш файл происходит от одного хоста (
localhost
), но если схема отличается (http
/file
), они рассматриваются как разные источники.источник
file://
, но я не понимаю, почему это разрешено. Ну, я устанавливаю Lampp, я думаю ...load('file://C:/users/user/supersecret.doc')
а затем загружает контент на свой сервер, используя ajax и т. Д.Просто чтобы быть точным - Да, ошибка говорит о том, что вы не можете направить свой браузер напрямую на
file://some/path/some.html
Вот несколько вариантов быстрого раскрутки локального веб-сервера, чтобы ваш браузер отображал локальные файлы.
Python 2
Если у вас установлен Python ...
Перейдите в папку, в которой существует ваш файл
some.html
или файлы, используя командуcd /path/to/your/folder
Запустите веб-сервер Python с помощью команды
python -m SimpleHTTPServer
Это запустит веб-сервер для размещения всего вашего каталога в
http://localhost:8000
python -m SimpleHTTPServer 9000
дающий вам ссылку:http://localhost:9000
Этот подход встроен в любую установку Python.
Python 3
Проделайте те же шаги, но вместо этого используйте следующую команду
python3 -m http.server
Node.js
В качестве альтернативы, если вам требуется более гибкая настройка и вы уже используете nodejs ...
Установите
http-server
, набравnpm install -g http-server
Перейдите в свой рабочий каталог, где ваша
some.html
жизньЗапустите ваш http-сервер, выполнив
http-server -c-1
Это раскручивает Node.js httpd, который обслуживает файлы в вашем каталоге как статические файлы, доступные из
http://localhost:8080
Рубин
Если вы предпочитаете язык Ruby ... боги Ruby говорят, что это также работает:
PHP
Конечно, PHP также имеет свое решение.
источник
$ python -m SimpleHTTPServer
, которые выдают сообщение:Serving HTTP on 0.0.0.0 port 8000 ...
Если вы написали неправильное имя модуля, например,$ python -m SimpleHttpServer
тогда вы получите сообщение об ошибке.No module named SimpleHttpServer
Вы получите похожее сообщение об ошибке, если у вас есть python3. установлен (v. python 2.7). Вы можете проверить свою версию питона с помощью команды:$ python --version
. Вы также можете указать порт для прослушивания следующим образом:$ python -m SimpleHTTPServer 3333
$ cd ~/angular_projects/1app
, затем$ python -m SimpleHTTPServer
. В вашем браузере введите URLhttp://localhost:8000/index.html
. Вы также можете запросить файлы в подкаталогах каталога, в котором вы запустили сервер, напримерhttp://localhost:8000/subdir/hello.html
В Chrome вы можете использовать этот флаг:
Узнайте больше здесь.
источник
--allow-file-access-from-files
). Это означает использование Chrome для обычного просмотра веб-страниц и использование Chromium в качестве приложения по умолчанию для файла HTML.fetch()
это все равно отрицает. Вы должны использоватьXMLHttpRequest
каким-либо образомНаткнулся на это сегодня.
Я написал код, который выглядел так:
... но это должно было выглядеть так:
Единственным отличием было отсутствие
http://
во втором фрагменте кода.Просто хотел показать это на случай, если есть другие с похожей проблемой.
источник
Просто измените URL
http://localhost
вместоlocalhost
. Если вы открываете файл html из локального файла, вам следует создать локальный сервер для обслуживания этого файла html, самый простой способ - использованиеWeb Server for Chrome
. Это решит проблему.источник
Web Server for Chrome
ссылки на приложение - это, безусловно, самое простое и чистое решение для временной настройки httpd для Chrome IMOВ приложении для Android - например, чтобы разрешить JavaScript иметь доступ к активам через
file:///android_asset/
- используйтеsetAllowFileAccessFromFileURLs(true)
для того,WebSettings
что вы получаете от вызоваgetSettings()
наWebView
.источник
Используйте
http://
илиhttps://
для создания URLошибка :
localhost:8080
решение :
http://localhost:8080
источник
Самый быстрый способ для меня был: для пользователей Windows запустить ваш файл в Firefox проблема решена, или если вы хотите использовать Chrome, проще всего было установить Python 3, затем из командной строки запустить команду и
python -m http.server
перейти по адресу http: // localhost: 8000 / затем перейдите к своим файламисточник
Я собираюсь перечислить 3 различных подхода к решению этой проблемы:
npm
пакета : Установите live-server с помощьюnpm install -g live-server
. Затем перейдите в этот каталог, откройте терминал, введитеlive-server
и нажмите Enter, страница будет обслуживаться по адресуlocalhost:8080
. БОНУС: Он также поддерживает горячую перезагрузку по умолчанию.target
до"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/ChromeDevSession"
и сохранить. Затем с помощью Chrome откройте страницу с помощьюctrl+o
. ПРИМЕЧАНИЕ: НЕ используйте этот ярлык для регулярного просмотра.источник
Для тех, кто работает в Windows без Python или Node.js, есть простое решение: Mongoose .
Все, что вам нужно сделать, это перетащить исполняемый файл туда, где должен быть корень сервера, и запустить его. На панели задач появится значок, и он перейдет на сервер в браузере по умолчанию.
Кроме того, Z-WAMP - это 100% портативный WAMP, который работает в одной папке, это потрясающе. Это вариант, если вам нужен быстрый сервер PHP и MySQL.
источник
Если вы используете Mozilla Firefox, он будет работать, как и ожидалось, без каких-либо проблем;
PS Удивительно, но IntenetExplorer_Edge работает абсолютно отлично !!!
источник
Простое решение для тех, кто использует VS Code
Я получаю эту ошибку некоторое время. Большинство ответов работает. Но я нашел другое решение. Если вы не хотите иметь дело с
node.js
каким-либо другим решением здесь и работаете с файлом HTML (вызывая функции из другого файла js или выбирайте json api), попробуйте использовать расширение Live Server .Это позволяет легко открыть живой сервер. И из-за этого создает
localhost
сервер, проблема решается. Вы можете просто начатьlocalhost
, открыв HTML-файл, щелкнув правой кнопкой мыши на редакторе и нажавOpen with Live Server
.Он в основном загружает файлы используя
http://localhost/index.html
вместо использованияfile://...
.РЕДАКТИРОВАТЬ
Нет необходимости иметь
.html
файл. Вы можете запустить Live Server с помощью ярлыков.Надеюсь, это поможет кому-то :)
источник
Я получал именно эту ошибку при загрузке файла HTML в браузере, который использовал файл JSON из локального каталога. В моем случае я смог решить эту проблему, создав простой сервер узлов, который позволял сервировать статический контент. Я оставил код для этого в этом другом ответе .
источник
Я предлагаю вам использовать мини-сервер для запуска подобных приложений на локальном хосте (если вы не используете какой-либо встроенный сервер).
Вот тот, который очень прост в настройке и запуске:
источник
Я подозреваю, что это уже упоминалось в некоторых ответах, но я немного изменю это, чтобы получить полный рабочий ответ (его легче найти и использовать).
Перейдите по адресу : https://nodejs.org/en/download/ . Установите nodejs.
Установите http-сервер, запустив команду из командной строки
npm install -g http-server
.Перейдите в свой рабочий каталог, где
index.html
/yoursome.html
находится.Запустите ваш http-сервер, выполнив команду
http-server -c-1
Откройте веб-браузер в
http://localhost:8080
илиhttp://localhost:8080/yoursome.html
- в зависимости от вашего имени файла HTML.источник
Это просто говорит о том, что приложение должно быть запущено на веб-сервере. У меня была такая же проблема с хромом, я запустил tomcat и переместил туда свое приложение, и оно заработало.
источник
э. Я только что нашел несколько официальных слов: «Попытка загрузить не собранные, удаленные модули AMD, использующие плагин dojo / text, не удастся из-за ограничений безопасности из разных источников. (Встроенные версии модулей AMD не затрагиваются, поскольку вызовы dojo / text устраняются система сборки.) " https://dojotoolkit.org/documentation/tutorials/1.10/cdn/
источник
Один из способов загрузки локальных файлов - использовать их в папке проекта, а не вне папки проекта. Создайте одну папку под файлами примеров вашего проекта, аналогично тому, как мы создаем изображения, и замените раздел, в котором используется полный локальный путь, отличный от пути проекта, и используйте относительный URL-адрес файла в папке проекта. У меня сработало
источник
Для всех вас
MacOS
... установите простой LaunchAgent, чтобы включить эти великолепные возможности в вашу собственную копию Chrome ...Сохранение
plist
, названный в любой (launch.chrome.dev.mode.plist
например) в~/Library/LaunchAgents
с аналогичным содержанием в ...Он должен запускаться при запуске .. но вы можете заставить его сделать это в любое время с помощью команды терминала
launchctl load -w ~/Library/LaunchAgents/launch.chrome.dev.mode.plist
TADA! 😎 💁🏻 🙊 🙏🏾
источник
Запустите сервер приложений, и вы сможете получить доступ к файлу с localhost
источник
Невозможно загрузить статические локальные файлы (например, svg) без сервера. Если у вас есть NPM / ПРЯЖА установлена в вашем компьютере, вы можете настроить простой HTTP - сервер , используя « HTTP-сервер »
источник
Многие проблемы для этого, с моей проблемой отсутствует '/' пример: jquery-1.10.2.js: 8720 XMLHttpRequest не может загрузить http: // localhost: xxxProduct / getList_tagLabels / Это должно быть: http: // localhost: xxx / Product / getList_tagLabels /
Я надеюсь, что эта помощь для тех, кто сталкивается с этой проблемой.
источник
Я также смог воссоздать это сообщение об ошибке при использовании тега привязки со следующим href:
В моем случае для получения «указателя курсора» использовался тег, и событие фактически контролировалось каким-то jQuery при событии click. Я удалил href и добавил класс, который применяется:
источник
Для пользователей Linux Python:
источник
google-chrome --allow-file-access-from-files <url>
бы не работать и быть более кратким?Если вы настаиваете на том, чтобы запускать
.html
файл локально и не обслуживать его с помощью веб-сервера, вы можете в первую очередь предотвратить выполнение запросов из разных источников, сделав проблемные ресурсы встроенными.У меня была эта проблема при попытке обслужить
.js
файлы черезfile://
. Мое решение состояло в том, чтобы обновить мой скрипт сборки, чтобы заменить<script src="...">
теги<script>...</script>
. Вотgulp
подход для этого:1. запустить
npm install --save-dev
в пакетыgulp
,gulp-inline
иdel
.2. После создания
gulpfile.js
в корневом каталоге, добавьте следующий код (просто измените пути к файлам для любого, что вам подходит):gulp bundle-for-local
или обновите сценарий сборки, чтобы запустить его автоматически.Вы можете увидеть подробную проблему и решение для моего случая здесь .
источник
Кордова добиться этого. Я до сих пор не могу понять, как сделал Кордова. Это даже не проходит следуетInterceptRequest.
Позже я узнал, что ключ для загрузки любого файла из локального: myWebView.getSettings (). SetAllowUniversalAccessFromFileURLs (true);
И когда вы хотите получить доступ к любому http-ресурсу, веб-просмотр выполнит проверку с помощью метода OPTIONS, который вы можете предоставить доступ через WebViewClient.shouldInterceptRequest путем возврата ответа, а для следующего метода GET / POST вы можете просто вернуть null.
источник
Сначала закройте все экземпляры хрома.
после этого следуйте этому.
Я использовал эту команду на Mac.
"/ Applications / Google Chrome.app/Contents/MacOS/Google Chrome" --allow-file-access-from-files
Для окон:
Как запустить HTML с помощью Chrome в режиме «--allow-file-access-from-files»?
источник
Испытал это, когда я скачал страницу для просмотра в автономном режиме.
Я просто должен был удалить
integrity="*****"
иcrossorigin="anonymous"
атрибуты из всех<link>
и<script>
теговисточник