时
我在react中使用axios创建了一个GET请求,如下所示:
searchCity: function(){
return axios.get('https://autocomplete.wunderground.com/aq?query=lond' + '&format=JSON')
}
但是我看到了错误:
https://autocomplete.wunderground.com/aq?query=lond&format=JSON. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
尽管这是一个公共api,不需要访问密钥或任何东西。是否有其他方法从这个url获取JSON数据?
所以我花了大约一个小时来做这个!最后,似乎某些服务器不携带:
Access-Control-Allow-Origin: *
的响应头,然而一些服务器兼容JSONP而不是标准的JSON请求。但问题是,服务器也必须支持JSON-P。尽管URL中有format=jsonp,但服务器的响应不是JSON- p,而是JSON。
在这种情况下,它是和它是,下面的代码使用react-jsonp工作:
searchCity: function(){
return jsonp('https://autocomplete.wunderground.com/aq?query=lond', { param: 'cb' }, function (err, data) {
console.log(data.RESULTS);
})
关于这个问题的更多信息在这里找到:
Unexpected Token:当尝试解析JSON字符串