我正在尝试用JavaScript进行Yelp Fusion(V3)API调用

时间:2017-01-08 01:11:55

标签: javascript ajax cors

我在Postman中使用此API调用,但是当我将代码复制到我的JS代码中时,我收到以下错误:

  

XMLHttpRequest无法加载https://api.yelp.com/v3/businesses/search?term=restaurant&latitude=40.82783908257346&longitude=-74.10162448883057
  对预检请求的响应没有通过访问控制检查:否'访问控制 - 允许 - 来源'标头出现在请求的资源上。
  起源' null'因此不允许访问。
  响应的HTTP状态代码为500。

我的AJAX呼叫(为了安全而改变了承载):

library(purrr)

params_list <- list(list("mpg","mpg","mpg"),
                    list("drat","wt","qsec"))

pmap(params_list, render_report)

根据Yelp文档 - Yelp不支持CORS - 所以CORS不是问题。

1 个答案:

答案 0 :(得分:0)

我能够使用Fetch在客户端没有任何问题的情况下实现它。我怀疑它可能是你的标题之一。

fetch('https://api.yelp.com/oauth2/token?client_id=<CLIENT_ID>&client_secret=<CLIENT_SECRET>', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
  },
  body: JSON.stringify({
    grant_type: 'client_credentials',
  })
})
  .then((res) => res.json())
  .then((resJSON) => {
    this.setState({ access_token: resJSON.access_token });
    console.log(resJSON)
  })
  .then(() => {
    fetch('https://api.yelp.com/v3/businesses/search?location=12345', {
      method: 'GET',
      headers: {
        'authorization': 'Bearer ' + this.state.access_token
      }
    })
    .then((res) => res.json())
    .then((resJSON) => {
      console.log('resJSON', resJSON)
    })
  })
  .catch((err) => {
    console.log('err', err);
  })