vue axios访问外部API报错如何解决
后端是Express,CROS也设置了跨域请求(因为前端在8080,后端3000,这俩互通没有问题),
app.all('*', function(req, res, next) {
// CORS headers
res.header("Access-Control-Allow-Origin", "*"); // restrict it to the required domain
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
// Set custom headers for CORS
res.header('Access-Control-Allow-Headers', 'Content-type,Accept,X-Access-Token,X-Key');
if (req.method == 'OPTIONS') {
res.status(200).end();
} else {
next();
}
});
但是用第三方API的时候:
//vue中
mounted () {
axios
.get('https://api.bilibili.com/x/web-interface/view?aid=xxxxxx')
.then(response => (this.info = response))
}
浏览器报错:
Access to XMLHttpRequest at 'https://api.bilibili.com/x/web-interface/view?aid=xxxxxx' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我是想在前端通过b站的API来获取up主/标题/封面信息,不保存在数据库来着,想问问大佬们这个怎么解决呀。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
既然都使用了 express ,那就索性使用代理
express:
html/vue
跨域了啊,客户端访问不了的。可以用 Node.js 在服务端访问。
经过你的后端服务(express)进行代理
你这个是直接用浏览器,请求的 bilibili的接口,B站当然会有限制, 你可以用后端做一层转发请求。