Tentando pegar informações de uma API (JS/AJAX).

JavaScript

API

Ajax

24/01/2020

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.
Lucas

Lucas

Curtidas 0

Respostas

Stella Oliveira

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

GOSTEI 0
POSTAR