vue.js - Axios GET 请求导致 CORS 错误
问题描述
我正在开发一个 VueJS 应用程序,我想使用 Yahoo! 使用其条形码获取产品的购物 API(文档:https ://developer.yahoo.co.jp/webapi/shopping/shopping/v1/itemsearch.html)。但是,我不断收到 CORS 错误,我不确定为什么,或者我可以做些什么来使它工作。我的代码如下:
data() {
return {
appId: 'dj00aiZpPUQ4RTBUUTVSNUs3TyZzPWNvbnN1bWVyc2VjcmV0Jng9NTI-',
apiUrl: 'https://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemSearch'
}
}
...
axios.get(this.apiUrl, {
params: {
appid: this.appId,
jan: 4589707054951
}
})
.then((response) => {
console.log(response);
})
.catch((error) => {
alert(error)
})
我得到的具体错误是:
CORS 策略已阻止从源“ https://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemSearch?appid=dj00aiZpPUQ4RTBUUTVSNUs3TyZzPWNvbnN1bWVyc2VjcmV0Jng9NTI-&jan=4589707054951 ”访问 XMLHttpRequest :请求的资源上不存在“Access-Control-Allow-Origin”标头。
我能做些什么来完成这项工作?到目前为止,它唯一的工作方式是使用 CORS Chrome 扩展,但这自然只是为了测试。
非常感谢。
解决方案
我得到了同样的错误。我通过以下方式解决了它。
发生此错误是因为我们试图访问托管在不同服务器上的数据。CORS 问题是浏览器问题,其中某个浏览器确实允许您访问托管在不同服务器或虚拟服务器上的内容。如果您观察到您正在运行的应用程序位于本地主机 ( https://0.0.0.0:8080 ) 上并尝试访问托管在https://shopping.yahooapis.jp/ShoppingWebService/V1/json上的数据/项目搜索。您只需在 vue 应用程序中添加几行代码即可解决此问题。
第 1 步:在您的 vue 应用程序的根目录中创建一个名为 vue.config.js 的新文件,该文件位于您的 package.json 文件旁边。在 vue.config.js 文件中添加以下代码:
module.exports = {
devServer:{
proxy: "https://shopping.yahooapis.jp"
}
}
注意:https://shopping.yahooapis.jp将是您的基本网址。
第 2 步:现在,回到 data() 中的代码。将 apiUrl 的域名/基本 url 替换为https://0.0.0.0:8080。现在您的 apiUrl 将是https://0.0.0.0:8080/ShoppingWebService/V1/json/itemSearch。
data() {
return {
appId: 'dj00aiZpPUQ4RTBUUTVSNUs3TyZzPWNvbnN1bWVyc2VjcmV0Jng9NTI-',
apiUrl: 'https://0.0.0.0:8080/ShoppingWebService/V1/json/itemSearch'
}
}
第 3 步:重新启动您的应用程序。例如,npm run serve。
推荐阅读
- r - 有条件地删除 R 中的某些行
- javascript - 由 Ajax URL 请求调用时,Bootstrap 3 未加载所有类,但有些已执行
- node.js - 重定向 url 后无法获取授权码
- bash - 在后台启用端口转发后缺少其他命令
- firebase - 来自另一个云函数的可调用函数
- javascript - Laravel VueJs 在 laravel 控制器中存储来自 axios 请求的数组
- python - 如果一个符号不存在或被除名,Pandas Data Reader Tiingo 会在拉取多个符号时出错
- r - 如何在嵌套数据框上训练多个 h2o 模型?
- android-studio - 使用 Android STUDIO 在 Kotlin 中开发 windows 应用
- matlab - 使用 MATLAB 求解方程求解