Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

XMLHttpRequest cannot load

Estou fazendo uns testes para aplicar o conhecimento adquirido no curso. A aplicação é praticamente a mesma, a diferença é que estou consumindo um WS que vem de outra URL. Tenho o seguinte erro:

XMLHttpRequest cannot load http://localhost:9001/caminhoDoWs/retornarProdutos. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access. produtos-controller.js:12 null.

Detalhes que ja verifiquei: Se eu passar a aplicação angular para a mesma raiz do WS, tudo funciona normalmente. Mas se eu for rodar de outro local, não funciona.

Obrigado

5 respostas

Olá Pedro,

Isso ocorre por que os navegadores tem uma proteção nativa ,por que questões de segurança, para não permitir requisições para outros arquivos que não estão no mesmo domínio.

Para burlar isso, você tem que abrir o seu navegador com alguma flag para desabilitar essas proteções, por exemplo no Google Chrome, você abre um terminal e usa o comando:

chrome.exe --allow-file-access-from-files

Assim você remove essa proteção nessa nova instancia do chrome.

Espero que te ajude :)

Olá Pedro,

Por padrão, nenhum navegador pode acessar outro domínio e porta diferente do domínio e porta original. Se isso fosse possível sem restrição, o mundo acabaria e um JS malicioso poderia enviar dados de cartão de crédito para outro site. Isso já existe há anos e foi feito assim mesmo.

Para que isso seja possível, você deve habilitar CORS em seu backend escolhido. A dica é você estudar sobre essa sigla e ver como implementar em seu servidor.

solução!

Segue um link para você se iterar sobre o assunto. No final, essa nem é uma questão do Angular, mas de backend mesmo.

Sucesso e bom estudo!

https://pt.wikipedia.org/wiki/Cross-origin_resource_sharing

E se quiser saber mais porque o padrão é só aceita a mesma origem:

https://pt.wikipedia.org/wiki/Pol%C3%ADtica_de_mesma_origem

Obrigado pela ajuda, galera! Mais tarde realizarei os teste. Abraços

Se o problema já foi resolvido, marque a resposta por favor, caso contrário avise para que possamos te ajudar.