Tentando pegar informações de uma API (JS/AJAX).
Estou tentando pegar informações de uma API de clima, só para aprender mesmo, mas o erro abaixo acontece:
********
Access to fetch at 'https://crossorigin.me/https://www.metaweather.com/api/location/2487956/' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
********
Este é o código:
********
fetch('https://www.metaweather.com/api/location/2487956/')
.then(result => {
return result.json();
})
.then(data => console.log(data))
.catch(error => console.log(error));
********
Alguém teria alguma sugestão para resolver?
OBS: eu tentei usar um site chamado "crossorigin.me", a solução seria copiar a url dele e colar antes da url da API no fetch, mas não funcionou, creio que o site não esteja mais no ar.
********
Access to fetch at 'https://crossorigin.me/https://www.metaweather.com/api/location/2487956/' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
********
Este é o código:
********
fetch('https://www.metaweather.com/api/location/2487956/')
.then(result => {
return result.json();
})
.then(data => console.log(data))
.catch(error => console.log(error));
********
Alguém teria alguma sugestão para resolver?
OBS: eu tentei usar um site chamado "crossorigin.me", a solução seria copiar a url dele e colar antes da url da API no fetch, mas não funcionou, creio que o site não esteja mais no ar.
Lucas
Curtidas 0
Respostas
Stella Oliveira
24/01/2020
Lucas, o site está no ar. Fazendo a request pelo cUrl funciona tranquilamente.
O problema é que, por algum motivo, a api deles não está enviando de volta o header de "Access-Control-Allow-Origin" e este já é um problema recorrente na api.
De acordo com a issue no github: https://github.com/public-apis/public-apis/issues/644, esse problema já deveria estar corrigido
Não existe nada de errado com seu código, é só a api do MetaWeather que não está bem configurada e definitivamente não vai te retornar nenhuma resposta, já que ela não está aberto ao público nem a outras origens.
Pra entender melhor sobre o CORS, dá uma olhada nesse link:
- https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS
O problema é que, por algum motivo, a api deles não está enviando de volta o header de "Access-Control-Allow-Origin" e este já é um problema recorrente na api.
De acordo com a issue no github: https://github.com/public-apis/public-apis/issues/644, esse problema já deveria estar corrigido
Não existe nada de errado com seu código, é só a api do MetaWeather que não está bem configurada e definitivamente não vai te retornar nenhuma resposta, já que ela não está aberto ao público nem a outras origens.
Pra entender melhor sobre o CORS, dá uma olhada nesse link:
- https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Controle_Acesso_CORS
GOSTEI 0