我正在尝试从meta weather api获取数据,但它没有让我

时间:2019-09-28 14:59:27

标签: javascript cors

我正在尝试从meta weather API中获取数据。由于CORS问题,我正在使用这个名为“ crossorigin.me”的代理东西。仍然,它不让我获取数据。在许多人建议这样做之后,我什至包括了“ mode:'no-cors”。

<!DOCTYPE html>
<html>
<head>
    <title> Fetch Promise </title>
</head>
<body>
<script>
    function getWeather(woeid){
    fetch(`https://crossorigin.me/https://www.metaweather.com/api/location/${woeid}/`,{mode: 'no-cors'})
//fetch always returns a promise
.then(data => {
    console.log(data)
    return data.json()
    // json also returns a promise so we handle that by chaining
})
.then(result => {
const today = result.consolidated_weather[0]
console.log(`temperature in ${result.title} stay between ${today.min_temp} and ${today.max_temp}`)
})
.catch(error => console.log(error)) 
}
getWeather(2487956)
</script>
</body>
</html

2 个答案:

答案 0 :(得分:1)

由于交通流量大或其他原因,您正在使用的CORS解决方法服务可能不可用。

非常感谢,使用heroku设置自己的个人代理非常简单。

遵循此线程的第一个响应中的指示:cors-anywhere.herokuapp.com not working (503). What else can I try?

希望这会有所帮助。

答案 1 :(得分:0)

MetaWeather API不支持CORS。您需要在与前端相同的域上运行自己的服务器应用程序,以发出请求并获取API响应,并指定适当的标头:例如Access-Controll-Allow-Origin: *。 请参阅这篇文章:https://jeremyliberman.com/2019/02/11/fetch-has-been-blocked-by-cors-policy.html

以Node.js和Express作为起点。