Ошибка "Кросс-доменные запросы поддерживаются только для HTTP" при загрузке локального файла
Я пытаюсь загрузить 3D-модель, которая хранится локально на моем компьютере, в Three.js с помощью JSONLoader
. Эта 3D-модель находится в той же директории, что и весь сайт.
Однако при попытке загрузки я получаю ошибку: "Cross origin requests are only supported for HTTP."
Не могу понять, в чем причина этой ошибки и как ее исправить.
5 ответ(ов)
Сегодня столкнулся с проблемой.
Я написал код, который выглядел вот так:
app.controller('ctrlr', function($scope, $http){
$http.get('localhost:3000').success(function(data) {
$scope.stuff = data;
});
});
...но он должен был выглядеть так:
app.controller('ctrlr', function($scope, $http){
$http.get('http://localhost:3000').success(function(data) {
$scope.stuff = data;
});
});
Единственное отличие заключалось в отсутствии http://
во втором фрагменте кода.
Хотел просто поделиться этой информацией, на случай, если кто-то столкнется с аналогичной проблемой.
Чтобы решить проблему с ошибкой, связанной с созданием URL, убедитесь, что вы используете правильный протокол.
Ошибка: localhost:8080
Решение: добавьте http://
или https://
к вашему URL, чтобы он выглядел следующим образом: http://localhost:8080
.
Это необходимо, поскольку URL должен начинаться с протокола, чтобы браузер мог корректно определить, как осуществить связь с сервером.
Для того чтобы в Android приложении предоставить JavaScript доступ к ресурсам через file:///android_asset/
, вам нужно использовать метод setAllowFileAccessFromFileURLs(true)
у WebSettings
, который вы получите, вызвав getSettings()
на вашем WebView
. Вот пример кода:
WebView webView = findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true); // Включение JavaScript
webSettings.setAllowFileAccessFromFileURLs(true); // Разрешение доступа к файлам
Обязательно убедитесь, что вы также включили поддержку JavaScript, если это необходимо для вашей задачи.
Самый быстрый способ для меня был следующим:
Для пользователей Windows: запустите ваш файл в Firefox — проблема решена.
Если вы хотите воспользоваться Chrome, то самым простым способом было установить Python 3, а затем в командной строке выполнить команду:
python -m http.server
После этого перейдите на http://localhost:8000/ и найдите ваши файлы.
Если вы используете старую версию Mozilla Firefox (до 2019 года), она будет работать как ожидается, без каких-либо проблем.
P.S. Удивительно, но старые версии Internet Explorer и Edge тоже работают совершенно нормально.
Как включить один JavaScript файл в другой?
Запись в файлы в Node.js
Как отправить POST-запрос между доменами с помощью JavaScript?
HTTP-запросы с `withCredentials`: что это и зачем это нужно?
Как получить File() или Blob() из URL в JavaScript?