造成此问题的原因是
https://api.yelp.com/不支持CORS。
而且,您无法在自己的应用程序代码中解决此问题-无论您尝试什么,都无法更改
https://api.yelp.com/不支持CORS 的事实。
显然,虽然Yelp API确实支持JSONP。)。
因此,在前端代码中使用https://api.jquery.com/jquery.getjson/或类似代码将使您可以从前端代码向Yelp
API跨域请求。
Yelp API示例回购的GitHub问题跟踪器中的一个相关问题确认没有CORS:
TL; DR:api.yelp.com不支持CORS
还有另一个相关问题:
正如我在#99中回答的那样,我们没有提供使用客户端js直接向api发出请求所需的CORS标头。
上面引用的两个评论均来自Yelp工程师。
因此,这意味着,您的前端Javascript代码无法直接向Yelp API端点发出请求并获得常规响应(与JSONP响应相反)。
具体来说,由于来自
https://api.yelp.com/v3/businesses/searchAPI端点的
Access-Control-Allow-Origin响应不包含响应标头,因此浏览器将不允许您的前端Javascript代码访问这些响应。
另外,由于您的请求包含
Authorization和,并且
Content-Type标头包含值
application/json,因此您的浏览器会在尝试发送实际请求之前执行CORS预检选项请求
GET。
在这种情况下,预检是特别失败的。但是,从前端Javascript代码到该API端点的任何其他请求也会失败,即使它没有触发预检。



