【发布时间】:2017-07-17 09:19:04
【问题描述】:
从事一个涉及汽车数据的新 Laravel 项目,并找到了一个免费的查找 API。
http://www.carqueryapi.com/documentation/api-usage/
一个示例端点是:
https://www.carqueryapi.com/api/0.3/?callback=?&cmd=getMakes
这在 PostMan 上可以正常 GET 请求。
但是在使用 Axios 的 Vue.js 中:
getAllMakes: function() {
axios.get("https://www.carqueryapi.com/api/0.3/?callback=?&cmd=getMakes").then(function(response) {
console.log(response);
});
}
我遇到了 CORS 问题:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
有什么我可以做的吗?或者某些 API 被阻塞了?
【问题讨论】:
-
您需要设置 Access-Control-Allow-Origin 标头。查看此链接以获取更多信息,此页面底部的标题信息:codeheaven.io/how-to-use-axios-as-your-http-client
-
Cors 问题是您的浏览器保护您,这就是为什么它不会在 Postman 中失败,因为他们忽略了它。解决方案是您需要在 Laravel API 中设置正确的标头。有几种方法可以解决这个问题,请参阅stackoverflow.com/questions/33076705/…
-
@tam5:他在示例代码中使用的是 Vue 而不是 Laravel。我个人认为出于安全原因,您应该在服务器端而不是在客户端获取 API 数据。也许这个演示 api 不需要凭据,但我相信稍后如果您想获取真实数据,您将需要针对 api 进行身份验证。然后问题是:您是否要让用户控制身份验证凭据?如果没有在后端获取数据,然后在您的 vue 组件中从那里获取它。
标签: javascript api vue.js axios