Eu tenho três arquivos de um aplicativo js angular muito simples
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"
}
];
})();
Comecei a receber esse erro assim que inseri uma inclusão de product-color.html usando a diretiva personalizada denominada 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'.
O que pode estar errado? É um problema de caminho para product-color.html?
Todos os meus três arquivos estão na mesma pasta raiz C:/user/project/
javascript
html
angularjs
xmlhttprequest
user3422637
fonte
fonte
Respostas:
Este erro está ocorrendo porque você está apenas abrindo documentos html diretamente do navegador. Para corrigir isso, você precisará fornecer seu código em um servidor da web e acessá-lo no host local. Se você tiver a configuração do Apache, use-o para servir seus arquivos. Alguns IDE's construíram servidores Web, como o JetBrains IDE, o Eclipse ...
Se você tiver a configuração do Node.Js, poderá usar o servidor http . Basta executar
npm install http-server -g
e você será capaz de usá-lo no terminal comohttp-server C:\location\to\app
.fonte
CORREÇÃO MUITO SIMPLES
No terminal
Agora, vá para localhost: 8000 no seu navegador e a página será exibida
fonte
python -m http.server
.A operação não é permitida no chrome. Você pode usar um servidor HTTP (Tomcat) ou o Firefox.
fonte
Meu problema foi resolvido apenas adicionando
http://
ao meu endereço de URL. por exemplo, usei emhttp://localhost:3000/movies
vez delocalhost:3000/movies
.fonte
Se você estiver usando isso no navegador chrome / chromium (por exemplo, no Ubuntu 14.04), poderá usar um dos comandos abaixo para solucionar esse problema.
Isso permitirá que você carregue o arquivo em chrome ou crómio. Se você precisar fazer a mesma operação no Windows, poderá adicionar essa opção nas propriedades do atalho do chrome ou executá-la
cmd
com o sinalizador. Esta operação não é permitida no Chrome, Opera, Internet Explorer por padrão. Por padrão, ele funciona apenas no Firefox e Safari. Portanto, usar este comando irá ajudá-lo.Como alternativa, você também pode hospedá-lo em qualquer servidor da web (exemplo: Tomcat-java, NodeJS-JS, Tornado-Python etc.) com base em qual idioma você se sente confortável. Isso funcionará em qualquer navegador.
fonte
Se, por qualquer motivo, você não puder hospedar os arquivos em um servidor da web e ainda precisar de algum tipo de carregamento de parciais, use a
ngTemplate
diretiva.Dessa forma, você pode incluir sua marcação nas tags de script no arquivo index.html e não precisar incluir a marcação como parte da diretiva real.
Adicione isso ao seu index.html
Então, na sua diretiva:
fonte
Causa raiz:
O protocolo de arquivo não suporta solicitação de origem cruzada para o Chrome
Solução 1:
use o protocolo http em vez de arquivo, o que significa: configurar um servidor http, como apache ou nodejs + http-server
Procedimento 2:
Adicione - Permitir acesso a arquivos após o destino do atalho do Chrome e abra uma nova instância de navegação usando este atalho
Solução 3:
use o Firefox
fonte
npm install http-server -g
http-server . -o
fonte
Eu acrescentaria que também é possível usar xampp, tipo mamp, e colocar seu projeto na pasta htdocs para que ele seja acessível no localhost
fonte
Se você já estiver executando o servidor, não se esqueça de usar http: // na chamada da API. Isso pode causar um problema sério.
fonte
O motivo
Você não está abrindo a página através de um servidor, como o Apache, portanto, quando o navegador tenta obter o recurso, ele pensa que é de um domínio separado, o que não é permitido. Embora alguns navegadores permitam.
A solução
Execute o inetmgr e hospede sua página localmente e navegue como http: // localhost: portnumber / PageName.html ou através de um servidor Web como Apache, nginx, node etc.
Como alternativa, use um navegador diferente Nenhum erro foi mostrado ao abrir diretamente a página usando o Firefox e o Safari. Ele vem apenas para Chrome e IE (xx).
Se você estiver usando editores de código como Brackets, Sublime ou Notepad ++, esses aplicativos lidam com esse erro automaticamente.
fonte
Esse problema não está acontecendo no Firefox e Safari. Verifique se você está usando a versão mais recente do xml2json.js. Porque eu enfrentei o erro do analisador XML no IE. Na melhor maneira do Chrome, você deve abri-lo no servidor como Apache ou XAMPP.
fonte
existe uma extensão do chrome 200ok, é um servidor web para o chrome, basta adicionar e selecionar sua pasta
fonte
Você deve abrir o chrome usando o seguinte sinalizador: Vá para o menu Executar e digite "chrome --disable-web-security --user-data-dir"
Verifique se todas as instâncias do chrome estão fechadas antes de usar o sinalizador para abrir o chrome. Você receberá um aviso de segurança que indica que o CORS está ativado.
fonte
Adicionando à excelente solução @Kirill Fuchs e respondendo à dúvida do @ StackUser - ao iniciar o servidor http, defina o caminho até a pasta do aplicativo, NÃO até a página html!
http-server C:\location\to\app
e acessarindex.html
naapp
pastafonte
Navegue para C: /user/project/index.html, abra-o com o Visual Studio 2017, Arquivo> Visualizar no navegador ou pressione Ctrl + Shift + W
fonte
Eu tive o mesmo problema. depois de adicionar o código abaixo ao meu arquivo app.js, ele foi corrigido.
fonte