Подтвердить что ты не робот

Сообщение об ошибке "XMLHttpRequest не может загрузить. Запросы на кросс-начало поддерживаются только для HTTP в AngularJS '

Это мой код:

MyAppModule.factory('EventData', function($http,$log){
    return {
        getEvent : function(successcb){

            $http({method: 'GET', url: './js/Services/products.json'}).

            success(function(data) {
                $log.info("success");
            }).
            error(function(data) {
                $log.info("error");
            });
        }
    };
});

У меня есть простой JSON файл в локальном расположении, и я пытаюсь его прочитать с помощью метода http AngularJS. Я получаю следующую ошибку:

XMLHttpRequest не может загрузить файл:///C:/Users/Avraam/Documents/GitHub/AngularJS/app/js/Services/products.json Запросы на кросс-начало поддерживаются только для HTTP. angular.min.js: 73 Ошибка: произошла сетевая ошибка.

В чем моя ошибка? Я не использую сервер; Я просто открываю свой индексный файл с помощью Chrome. Это ошибка? Должен ли я использовать сервер, если я хочу использовать метод http?

4b9b3361

Ответ 1

Если это для локальной разработки, и вы используете Chrome, вам нужно запустить Chrome с несколькими аргументами, чтобы уменьшить безопасность следующим образом:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files --disable-web-security

Ответ 2

Я исправил эту проблему, запустив мою страницу с сервера, вот так

cd /path/to/dir/with/the/index/file
python3 -m http.server

затем откройте http://localhost: 8000 в вашем браузере.

Другие способы обслуживания текущего каталога см. В этом вопросе.

Ответ 3

Для пользователей Mac соответствующая команда будет выглядеть так:

open /Applications/Google\ Chrome.app --args --allow-file-access-from-files --disable-web-security

Обновление:

open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --args --user-data-dir="/tmp/chrome_dev_test" --allow-file-access-from-files --disable-web-security

Источник

Ответ 4

Если вы находитесь в среде Windows и используете npm для управления пакетами, проще всего установить HTTP-сервер по всему миру:

npm install -g http-server

Затем просто запустите http-сервер в любом из ваших каталогов проектов:

Eg. d:\my_project> http-server

Starting up http-server, serving ./ Available on: http:169.254.116.232:8080 http:192.168.88.1:8080 http:192.168.0.7:8080 http:127.0.0.1:8080 Hit CTRL-C to stop the server

Простой и не угроза безопасности при случайном выходе из браузера уязвимым.

Ответ 5

Следующая команда работает для меня. Но перед командой нужно как-то остановить процесс chrome, можно из диспетчера задач

 "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files --disable-web-security

Другой способ заставить это работать следующим образом: сначала откройте Run, нажав: кнопка Windows + R, затем скопируйте и вставьте туда следующую команду:

 chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

Это откроет браузер Chrome в отключенном режиме безопасности, и вы можете преодолеть эти ошибки.

Спасибо

Ответ 6

Вы можете создать виртуальный хост с WAMP или другой платформой веб-разработки.

У меня нет проблем.

Ответ 7

запустите сервер http node и подайте файл.

  • Установить connect и serve-static с помощью NPM

    $npm install connect serve-static

  • Создайте файл server.js с этим контентом:

    var connect = require ('connect'); var serveStatic = require ('serve-static'); connect(). use (serveStatic (__ dirname)). listen (8080, function() {   console.log( "Сервер работает на 8080" ); });

  • Запустите с помощью Node.js

    $node server.js

Теперь вы можете перейти к файлу, который делает запрос с кросс-началом без каких-либо ошибок, перейдя: http://localhost:8080/yourfile.html