Сообщение об ошибке "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
?
Ответы
Ответ 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