我正在尝试从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
答案 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作为起点。