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

Uma duvida, não posso fazer requisições ajax só com o site?

Estou seguindo as aulas e resolvi fazer um sitezinho que calcula frete de motoboy baseado na distancia que recebo da api do google maps. Só que quando fui fazer a requisição, o navegador me voltou essa mensagem: from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource

Dei uma pesquisada no forum e em outros sites, pelo o que entendi eu não posso fazer requisições direto com o javascript, eu teria que ter um server backend para isso (?)

Alguem pode me explicar melhor? Pois na API do professor por exemplo ele consegue fazer requisições normal.

meu código:

var xhr = new XMLHttpRequest();

xhr.open("GET", "https://maps.googleapis.com/maps/api/distancematrix/json?origins=Vila+Maria+São+Paulo+Rua+Guaranesia+1445&destinations="+cep+"&key=minhakey");

xhr.addEventListener("load", function() {
    var resposta = xhr.responseText;
    console.log(typeof resposta);
})

xhr.send();
5 respostas

Fala aí Guilherme, tudo bem? O CORS só existe em browsers, ele foi criado por N motivos e um deles é para aumentar um pouco a segurança do back-end.

Esse esse é porque seu IP não está liberado para realizar requisições para essa API.

É possível resolver de N maneiras, exemplo:

  • API liberar e permitir que seu IP público acesse a mesma.
  • Configurar alguns proxys.

Mas, talvez o ideal seria você criar um pequeno back-end, mudar a chamada do seu front para ele e ele chama a API da google.

Espero ter ajudado.

solução!

Obg pela resposta! Agora entendi melhor, então basicamente a forma correta de conversar com APIS é tudo pelo back mesmo. _

Eu resolvi meu problema usando a biblioteca para javascript do google, que permite fazer as requisições direto do front.

Obg!

Boa Guilherme, fico feliz que tenha conseguido resolver.

Utilizou o Firebase? Não sei que biblioteca seria essa.

Sempre que precisar não deixe de criar suas dúvidas.

Abraços e bons estudos.

Hmm, talvez eu tenha me equivocado pois sou noob ainda, mas a biblioteca que comentei seria essa: https://developers.google.com/maps/documentation/javascript/tutorial

Eles falam que é uma api para javascript com biblioteca deles, não sei bem o que é porem funcionou para fazer as requisições do jeito que estava tentando!

Entendi, sim, é um biblioteca para fazer requisições para o Maps.

Por debaixo dos panos eles fazem requisições HTTP normais, provavelmente devem user XMLHttpRequest ou fetch.

Abraços e bons estudos.