我是React的新手,为了练习,我正在尝试构建一个从Yelp API获取信息的应用程序,但是我无法获得响应。 Yelp Fusion v3需要一个'access_token'(我已成功收到Postman的响应)。因此,要在我的应用程序中发出此请求,我正在使用Axios。当我在componentDidMount()中发出这个请求时,作为我得到的响应
XMLHttpRequest无法加载https://api.yelp.com/v3/businesses/search?term=sushi&location=Boston。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:8080”访问。响应的HTTP状态代码为500。
虽然看起来我错误地指定了access_token和参数,但是当在单独的文件(不是应用程序的一部分)中运行相同的代码时,我得到了我在我的应用程序中寻找的JSON响应。
这是我的componentDidMount():
componentDidMount: function () {
axios.get('https://api.yelp.com/v3/businesses/search?term=Sushi&location=Boston',{
headers: {
Authorization: `Bearer ${token}`
}
})
.then(function(res){
console.log(res)
})
.catch(function(err){
console.log(err)
})
},
我也尝试了Yelp节点模块,但我没有运气。请帮忙!
答案 0 :(得分:1)
此错误是跨源错误。
Web浏览器可以捕获AJAX请求:它们需要发送到同一个源或由第三方本身授权,否则它们将被阻止。由于您无法控制Yelp,我建议您采取解决方法。
可用的解决方法
<script>
标记中发出请求。服务器将响应包装在Javascript脚本中,并将其加载到页面。 (https://en.wikipedia.org/wiki/JSONP)。服务器必须提供这种解决方法的格式才能工作。可能还有其他方法可以解决这个问题,但这些方法很受欢迎。
希望这有帮助。