0

我在反应中使用 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 数据?

4

1 回答 1

1

所以我花了大约一个小时在这上面!最后,某些服务器似乎不携带:

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 字符串时

于 2016-10-11T08:45:03.510 回答