У меня есть три файла очень простого приложения angular js
index.html
<!DOCTYPE html>
<html ng-app="gemStore">
<head>
<script src='https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js'></script>
<script type="text/javascript" src="app.js"></script>
</head>
<body ng-controller="StoreController as store">
<div class="list-group-item" ng-repeat="product in store.products">
<h3>{{product.name}} <em class="pull-right">{{product.price | currency}}</em></h3>
</div>
<product-color></product-color>
</body>
</html>
продукт-color.html
<div class="list-group-item">
<h3>Hello <em class="pull-right">Brother</em></h3>
</div>
app.js
(function() {
var app = angular.module('gemStore', []);
app.controller('StoreController', function($http){
this.products = gem;
}
);
app.directive('productColor', function() {
return {
restrict: 'E', //Element Directive
templateUrl: 'product-color.html'
};
}
);
var gem = [
{
name: "Shirt",
price: 23.11,
color: "Blue"
},
{
name: "Jeans",
price: 5.09,
color: "Red"
}
];
})();
Я начал получать эту ошибку, как только ввел include of product-color.html, используя настраиваемую директиву с именем productColor:
XMLHttpRequest cannot load file:///C:/product-color.html. Cross origin requests are only supported for protocol schemes: http, data, chrome-extension, https, chrome-extension-resource.
angular.js:11594 Error: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'file:///C:/product-color.html'.
Что может быть не так? Это проблема пути для product-color.html?
Все мои три файла находятся в одной корневой папке C:/user/project/
javascript
html
angularjs
xmlhttprequest
user3422637
источник
источник
Ответы:
Эта ошибка происходит потому, что вы просто открываете HTML-документы прямо из браузера. Чтобы это исправить, вам нужно будет обслуживать ваш код с веб-сервера и обращаться к нему на локальном хосте. Если у вас есть настройки Apache, используйте его для обслуживания ваших файлов. Некоторые IDE имеют встроенные веб-серверы, такие как JetBrains IDE, Eclipse ...
Если у вас установлен Node.Js, вы можете использовать http-сервер . Просто запустите,
npm install http-server -g
и вы сможете использовать его в терминале, напримерhttp-server C:\location\to\app
.источник
ОЧЕНЬ ПРОСТОЕ ИСПРАВЛЕНИЕ
В терминале
Теперь перейдите на localhost: 8000 в своем браузере, и на странице отобразится
источник
python -m http.server
.Операция запрещена в хроме. Вы можете использовать HTTP-сервер (Tomcat) или вместо него Firefox.
источник
Моя проблема была решена, просто добавив
http://
к моему URL-адресу. например я использовалhttp://localhost:3000/movies
вместоlocalhost:3000/movies
.источник
Если вы используете это в браузере Chrome / Chrome (например, в Ubuntu 14.04), вы можете использовать одну из приведенных ниже команд для решения этой проблемы.
Это позволит вам загрузить файл в хром или хром. Если вам нужно выполнить ту же операцию для Windows, вы можете добавить этот переключатель в свойствах ярлыка Chrome или запустить его из
cmd
с флагом. По умолчанию эта операция запрещена в Chrome, Opera, Internet Explorer. По умолчанию работает только в firefox и safari. Следовательно, использование этой команды поможет вам.В качестве альтернативы вы также можете разместить его на любом веб-сервере (например, Tomcat-java, NodeJS-JS, Tornado-Python и т. Д.) В зависимости от того, какой язык вам удобен. Это будет работать в любом браузере.
источник
Если по какой-либо причине у вас нет файлов, размещенных на веб-сервере, и вам по-прежнему нужен какой-то способ загрузки частичных файлов, вы можете прибегнуть к использованию
ngTemplate
директивы.Таким образом, вы можете включить разметку внутри тегов сценария в файл index.html и не включать разметку как часть фактической директивы.
Добавьте это в свой index.html
Затем в вашей директиве:
источник
Основная причина:
Файловый протокол не поддерживает запрос на кросс-источник для Chrome
Решение 1:
используйте протокол http вместо файла, что означает: настройте http-сервер, такой как apache, или nodejs + http-server
Вариант 2:
Добавьте --allow-file-access-from-files после цели ярлыка Chrome и откройте новый экземпляр обзора, используя этот ярлык
Решение 3:
используйте вместо этого Firefox
источник
npm install http-server -g
http-server . -o
источник
Я бы добавил, что можно также использовать вещи типа xampp, mamp и поместить свой проект в папку htdocs, чтобы он был доступен на localhost
источник
Если вы уже используете сервер, не забудьте использовать http: // в вызове API. Это может вызвать серьезные проблемы.
источник
Причина
Вы не открываете страницу через сервер, такой как Apache, поэтому, когда браузер пытается получить ресурс, он думает, что это из отдельного домена, что недопустимо. Хотя некоторые браузеры позволяют это.
Решение
Запустите inetmgr и разместите свою страницу локально и просматривайте как http: // localhost: portnumber / PageName.html или через веб-сервер, такой как Apache, nginx, node и т. Д.
В качестве альтернативы используйте другой браузер. При прямом открытии страницы с помощью Firefox и Safari не отображалось никаких ошибок. Он доступен только для Chrome и IE (xx).
Если вы используете редакторы кода, такие как Brackets, Sublime или Notepad ++, эти приложения обрабатывают эту ошибку автоматически.
источник
Эта проблема не возникает в Firefox и Safari. Убедитесь, что вы используете последнюю версию xml2json.js. Потому что я столкнулся с ошибкой парсера XML в IE. В Chrome лучше всего открыть его на сервере, таком как Apache или XAMPP.
источник
есть расширение chrome 200ok, это веб-сервер для Chrome, просто добавьте его и выберите свою папку
источник
Вы должны открыть Chrome, используя следующий флаг. Откройте меню "Выполнить" и введите "chrome --disable-web-security --user-data-dir"
Убедитесь, что все экземпляры хрома закрыты, прежде чем использовать флаг для открытия хрома. Вы получите предупреждение системы безопасности, указывающее, что CORS включен.
источник
Добавление к @Kirill Fuchs отличного решения и ответ на сомнение @StackUser - при запуске http-сервера укажите путь только до папки приложения, а НЕ до html-страницы!
http-server C:\location\to\app
и доступindex.html
вapp
папкеисточник
Перейдите к C: /user/project/index.html, откройте его с помощью Visual Studio 2017, Файл> Просмотреть в браузере или нажмите Ctrl + Shift + W
источник
Я была такая же проблема. после добавления кода ниже в мой файл app.js он исправлен.
источник