Vue之跨域调用网易云音乐API及QQ音乐API
今天在做VUE项目的时候,发现调用QQ音乐轮播图的API一直失败,timeout真的不是我网络的问题,在客厅对着路由器调了一整天都是报错,我还以为是API失效了,但其实没有........晚上突然又可以获取了
但总不能不写轮播图吧,于是我把目光转向网易云的API,发现GitHub上有大佬写了个网易云API的合集,发现有我想要的轮播图,网易云轮播图可用!!撒花~~
--------------------------------------------------------------------------------------------------
6.30更新:今天调用QQ音乐api又出错,感觉像是因为Referer拦截了我的请求,幸好之前捣鼓了一下网易云.......
网易云API调用
可以看到网易云的返回数据是format=json
没什么好说的,直接调用API吧
js代码
import axios from 'axios'
export function getRecommend () {const url = 'http://localhost:3000/banner'const data = Object.assign({}, {type: 2})return axios.get(url, {params: data}).then((res) => {return Promise.resolve(res.data)})
}
vue代码
export default {created () {this._getRecommend()},methods: {_getRecommend () {getRecommend().then((res) => {console.log(res.banners)})}}
}
控制台的输出,可以看到是成功拿到结果
很迷惑的是我白天调了一天的QQ音乐的API,一直请求失败,然后晚上我再试试居然可以用了,迷惑.jpg
QQ音乐API调用
QQ音乐的是用的是jsonp,返回的参数不同,代码也得改改
js代码
export function getRecommend () {const url = 'https://c.y.qq.com/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg'const data = Object.assign({}, commonParams, {platform: 'h5',uin: 0,needNewCode: 1})return jsonp(url, data, options)
}
jsonp.js的代码
import originJSONP from 'jsonp'
export default function jsonp (url, data, option) {url += (url.indexOf('?') < 0 ? '?' : '&') + param(data)return new Promise((resolve, reject) => {originJSONP(url, option, (err, data) => {if (!err) {resolve(data)} else {reject(err)}})})
}
export function param (data) {let url = ''for (var k in data) {let value = data[k] !== undefined ? data[k] : ''url += `&${k}=${encodeURIComponent(value)}`}return url ? url.substring(1) : ''
}
vue组件中就改改返回数据的参数
export default {created () {this._getRecommend()},methods: {_getRecommend () {getRecommend().then(res => {if (res.code === 0) {console.log(res.data.slider)}})}}
}
可以看到也成功获得了数据
报过的错(踩过的坑):
1、SyntaxError: unexpected token: ':'
由于网易云服务器接口返回的数据类型并不是jsonp,是json,造成由于格式问题的报错。json是一种格式,jsonp是一种请求跨域资源的方式。
2、
浏览器拦截跨域请求处理方法(已阻止跨源请求:同源策略禁止读取远程资源)
解决方法:在被请求的程序中添加HTTP头,即CORS跨域(跨域资源共享,Cross-Origin Resource Sharing)
直接在根目录的index.html中添加
<meta http-equiv="Access-Control-Allow-Origin" content="*">
目的很简单,也就是告诉浏览器,这个资源是运行远程所有域名访问的。当然,此处的也可以替换为指定的域名,出于安全考虑,建议将替换成指定的域名。
总结:
可以看到虽然都是轮播图,但是QQ音乐和网易云的一个是jsonp请求,另一个直接返回json的数据,jsonp请求有个jsonpCallback参数,所以要另外写一个方法来处理,json就直接输出就行了,不过因为同源策略,要记得使用CORS跨域,不然就会被拦截。
参考文章:
Firebug: 已拦截跨源请求:同源策略禁止读取位于XXX的远程资源。里面还有挺多其他解决跨域问题的方法,感兴趣可以试试
Vue之跨域调用网易云音乐API及QQ音乐API相关推荐
- JS不跨域操控网易云音乐外链播放器
JS不跨域操控网易云音乐外链播放器 今天写个人网站,用到了背景音乐. 一开始想使用H5的audio标签,蛮成功的,但是传到服务器上后加载缓慢(腾讯云服务器学生优惠版,最低的配置),体验很差. 使用外链 ...
- 流行的Spring Boot + Vue架构整合开发的网易云+QQ音乐(附源码)
前言 虽然 B/S 是目前开发的主流,但是 C/S 仍然有很大的市场需求.受限于浏览器的沙盒限制,网页应用无法满足某些场景下的使用需求,而桌面应用可以读写本地文件.调用更多系统资源,再加上 Web 开 ...
- 牛皮!竟然有大佬基于 Spring Boot + Vue 开发了一套网易云amp;QQ音乐(附源码)。。。...
来源:segmentfault.com/a/1190000021376934 # 前言 虽然 B/S 是目前开发的主流,但是 C/S 仍然有很大的市场需求.受限于浏览器的沙盒限制,网页应用无法满足某些 ...
- 通过cmd调用网易云音乐
通过cmd调用网易云音乐 1.找到网易云音乐exe的路径 2.我的电脑->属性->高级系统属性->环境变量 新增一个系统变量并赋值我们上一步的路径即可 3.打开cmd 输入%wang ...
- 微信小程序调用网易云音乐接口
微信小程序调用网易云音乐接口 前段时间QQ音乐的调用接口不能用了,给大家整理了一个网易云音乐的调用接口. 1.API接口: API接口地址 2.访问连接地址: http://neteasecloudm ...
- vue 调用webservice_js跨域调用WebService的简单实例
步骤1. 在web.config中的system.web节点里加入 步骤2.webservice代码 using System; using System.Collections.Generic; u ...
- 调用网易云二维码登录API,实现微信小程序登录
调用网易云二维码登录API,实现微信小程序登录 首先前往网易云音乐API官网 binaryify.github.io/NeteaseClou- 首先根据文档的链接下载好配置文件,再根据官方文档启动好本 ...
- vue项目跨域的问题(一个项目对接两个不同的域名、端口接口导致跨域,最好的办法是后端解决)
vue项目跨域的问题前端解决方法(一个项目对接两个不同的域名.端口接口导致跨域,最好的办法是后端解决) 前端解决方法: ①打开config文件---->index.js文件,找到 proxyTa ...
- WCF 4.0 REST Service JSON跨域调用
最近在项目中用到了 WCF4.0 REST.在跨域调用时走了不少弯路,查了不少技术强人的文章,其实它真的就这么容易.好了不废话了直接贴代码. 调用的服务类: 1 [ServiceContra ...
- 解决js跨域调用WebApi的问题
解决js跨域调用WebApi的问题 参考文章: (1)解决js跨域调用WebApi的问题 (2)https://www.cnblogs.com/qubernet/p/6396295.html 备忘一下 ...
最新文章
- python字符编码讲解_python 字符编码讲解
- vector中erase函数
- 转 Oracle 删除表,oracle 中删除表 drop delete truncate 的区别
- 阿里云中间件技术 促进互联网高速发展
- python写gui导入图片并处理_Python图像处理库:Pillow 初级教程
- 大数据标签获取处理步骤_大数据处理分为哪些步骤
- Python如何打包EXE可执行文件
- 最后一条记录_幸好朋友圈没有访客记录。
- 使用双向链表构建二叉树_python:26.二叉搜索树与双向链表
- Python笔记-OpenCV图像处理和人脸识别
- 创新设计思维总结报告
- linux给文件夹图标,Linux 如何在启动器中自定义图标
- 经济适用型北京生活经验分享,80后北漂看过来
- 美团旅行数据质量监管平台实践
- c语言常用颜色种类,C语言常用颜色种类(国外英语资料).doc
- 计算机显示器分辨率,现在电脑的主流显示器的分辨率一般是多大?
- 如何绘制论文中的图表?
- 字蛛(FontSpider,中文字体压缩器)网页自由引入中文字体
- Virtualbox源码分析22 NEM(Hyper-V兼容)3 Emulation Thread
- IE去除“是否停止运行此脚本?此页面上的脚本造成Internet Explore运行速度减慢”的提示信息
热门文章
- 求解二次规划问题——外点罚函数法/内点罚函数法
- c语言的整形变量选择题,C语言选择题 (附答案)
- python用什么数据库比较好_Python和主流数据库
- 电子签名市场,CA、混合云、SaaS三路混战
- 搞懂激活函数(Sigmoid/ReLU/LeakyReLU/PReLU/ELU)
- Freeimage-3.18.0编译(静态库)
- java读取txt文件字符串_java读取txt文件,对字符串进行操作后导出txt文件
- C语言中16进制转字符串字符串转16进制
- 基于STM32的自由度云台运动姿态控制系统
- 如何从网页上下载内嵌的PDF文件