J'ai trois fichiers d'une application js angulaire très simple
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>
product-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"
}
];
})();
J'ai commencé à recevoir cette erreur dès que j'ai entré une inclusion de product-color.html en utilisant la directive personnalisée nommée 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'.
Qu'est-ce qui ne va pas? S'agit-il d'un problème de chemin pour product-color.html?
Tous mes trois fichiers sont dans le même dossier racine C:/user/project/
javascript
html
angularjs
xmlhttprequest
utilisateur3422637
la source
la source
Réponses:
Cette erreur se produit parce que vous ouvrez simplement des documents html directement à partir du navigateur. Pour résoudre ce problème, vous devrez servir votre code à partir d'un serveur Web et y accéder sur localhost. Si vous avez une configuration Apache, utilisez-la pour servir vos fichiers. Certains IDE ont des serveurs Web intégrés, comme JetBrains IDE, Eclipse ...
Si vous avez configuré Node.Js, vous pouvez utiliser le serveur http . Exécutez simplement
npm install http-server -g
et vous pourrez l'utiliser dans un terminal commehttp-server C:\location\to\app
.la source
CORRECTIF TRÈS SIMPLE
Dans le terminal
Maintenant, allez à localhost: 8000 dans votre navigateur et la page s'affichera
la source
python -m http.server
.L'opération n'est pas autorisée dans Chrome. Vous pouvez soit utiliser un serveur HTTP (Tomcat), soit utiliser Firefox à la place.
la source
Mon problème a été résolu simplement en ajoutant
http://
à mon adresse URL. par exemple, j'ai utilisé à lahttp://localhost:3000/movies
place delocalhost:3000/movies
.la source
Si vous l'utilisez dans un navigateur chrome / chrome (ex: dans Ubuntu 14.04), vous pouvez utiliser l'une des commandes ci-dessous pour résoudre ce problème.
Cela vous permettra de charger le fichier en chrome ou en chrome. Si vous devez effectuer la même opération pour Windows, vous pouvez ajouter ce commutateur dans les propriétés du raccourci Chrome ou l'exécuter à partir
cmd
de l'indicateur. Cette opération n'est pas autorisée dans Chrome, Opera, Internet Explorer par défaut. Par défaut, cela ne fonctionne que dans Firefox et Safari. Par conséquent, l'utilisation de cette commande vous aidera.Vous pouvez également l'héberger sur n'importe quel serveur Web (exemple: Tomcat-java, NodeJS-JS, Tornado-Python, etc.) en fonction de la langue avec laquelle vous êtes à l'aise. Cela fonctionnera à partir de n'importe quel navigateur.
la source
Si, pour une raison quelconque, vous ne pouvez pas héberger les fichiers à partir d'un serveur Web et avez encore besoin d'une sorte de moyen de charger les partiels, vous pouvez recourir à la
ngTemplate
directive.De cette façon, vous pouvez inclure votre balisage dans des balises de script dans votre fichier index.html et ne pas avoir à inclure le balisage dans le cadre de la directive réelle.
Ajoutez ceci à votre index.html
Ensuite, dans votre directive:
la source
Cause première:
Le protocole de fichier ne prend pas en charge la demande d'origine croisée pour Chrome
Solution 1:
utiliser le protocole http au lieu du fichier, ce qui signifie: configurer un serveur http, tel qu'apache, ou nodejs + http-server
Sotution 2:
Ajoutez --allow-file-access-from-files après la cible de raccourci de Chrome et ouvrez une nouvelle instance de navigation à l'aide de ce raccourci
Solution 3:
utilisez plutôt Firefox
la source
npm install http-server -g
http-server . -o
la source
J'ajouterais qu'on peut aussi utiliser xampp, type de choses mamp et mettre votre projet dans le dossier htdocs pour qu'il soit accessible sur localhost
la source
Si vous utilisez déjà le serveur, n'oubliez pas d'utiliser http: // dans l'appel d'API. Cela pourrait causer de sérieux problèmes.
la source
La raison
Vous n'ouvrez pas la page via un serveur, comme Apache, donc lorsque le navigateur tente d'obtenir la ressource, il pense qu'elle provient d'un domaine séparé, ce qui n'est pas autorisé. Bien que certains navigateurs le permettent.
La solution
Exécutez inetmgr et hébergez votre page localement et naviguez en tant que http: // localhost: portnumber / PageName.html ou via un serveur Web comme Apache, nginx, node, etc.
Vous pouvez également utiliser un autre navigateur Aucune erreur n'a été affichée lors de l'ouverture directe de la page à l'aide de Firefox et Safari. Il n'est disponible que pour Chrome et IE (xx).
Si vous utilisez des éditeurs de code tels que Brackets, Sublime ou Notepad ++, ces applications gèrent cette erreur automatiquement.
la source
Ce problème ne se produit pas dans Firefox et Safari. Assurez-vous que vous utilisez la dernière version de xml2json.js. Parce que j'ai fait face à l'erreur de l'analyseur XML dans IE. Dans Chrome, vous devez l'ouvrir sur un serveur comme Apache ou XAMPP.
la source
il y a une extension chrome 200ok, c'est un serveur Web pour chrome, ajoutez simplement cela et sélectionnez votre dossier
la source
Vous devez ouvrir Chrome en utilisant l'indicateur suivant Allez dans le menu Exécuter et tapez "chrome --disable-web-security --user-data-dir"
Assurez-vous que toutes les instances de chrome sont fermées avant d'utiliser l'indicateur pour ouvrir chrome. Vous recevrez un avertissement de sécurité indiquant que CORS est activé.
la source
Ajouter à @Kirill Fuchs une excellente solution et répondre au doute de @ StackUser - lors du démarrage du serveur http, définissez le chemin jusqu'au dossier de l'application uniquement, PAS avant la page html!
http-server C:\location\to\app
et accèsindex.html
sousapp
dossierla source
Accédez à C: /user/project/index.html, ouvrez-le avec Visual Studio 2017, Fichier> Afficher dans le navigateur ou appuyez sur Ctrl + Maj + W
la source
J'ai eu le même problème. après avoir ajouté le code ci-dessous à mon fichier app.js, il a été corrigé.
la source