今天在做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相关推荐

  1. JS不跨域操控网易云音乐外链播放器

    JS不跨域操控网易云音乐外链播放器 今天写个人网站,用到了背景音乐. 一开始想使用H5的audio标签,蛮成功的,但是传到服务器上后加载缓慢(腾讯云服务器学生优惠版,最低的配置),体验很差. 使用外链 ...

  2. 流行的Spring Boot + Vue架构整合开发的网易云+QQ音乐(附源码)

    前言 虽然 B/S 是目前开发的主流,但是 C/S 仍然有很大的市场需求.受限于浏览器的沙盒限制,网页应用无法满足某些场景下的使用需求,而桌面应用可以读写本地文件.调用更多系统资源,再加上 Web 开 ...

  3. 牛皮!竟然有大佬基于 Spring Boot + Vue 开发了一套网易云amp;QQ音乐(附源码)。。。...

    来源:segmentfault.com/a/1190000021376934 # 前言 虽然 B/S 是目前开发的主流,但是 C/S 仍然有很大的市场需求.受限于浏览器的沙盒限制,网页应用无法满足某些 ...

  4. 通过cmd调用网易云音乐

    通过cmd调用网易云音乐 1.找到网易云音乐exe的路径 2.我的电脑->属性->高级系统属性->环境变量 新增一个系统变量并赋值我们上一步的路径即可 3.打开cmd 输入%wang ...

  5. 微信小程序调用网易云音乐接口

    微信小程序调用网易云音乐接口 前段时间QQ音乐的调用接口不能用了,给大家整理了一个网易云音乐的调用接口. 1.API接口: API接口地址 2.访问连接地址: http://neteasecloudm ...

  6. vue 调用webservice_js跨域调用WebService的简单实例

    步骤1. 在web.config中的system.web节点里加入 步骤2.webservice代码 using System; using System.Collections.Generic; u ...

  7. 调用网易云二维码登录API,实现微信小程序登录

    调用网易云二维码登录API,实现微信小程序登录 首先前往网易云音乐API官网 binaryify.github.io/NeteaseClou- 首先根据文档的链接下载好配置文件,再根据官方文档启动好本 ...

  8. vue项目跨域的问题(一个项目对接两个不同的域名、端口接口导致跨域,最好的办法是后端解决)

    vue项目跨域的问题前端解决方法(一个项目对接两个不同的域名.端口接口导致跨域,最好的办法是后端解决) 前端解决方法: ①打开config文件---->index.js文件,找到 proxyTa ...

  9. WCF 4.0 REST Service JSON跨域调用

    最近在项目中用到了 WCF4.0 REST.在跨域调用时走了不少弯路,查了不少技术强人的文章,其实它真的就这么容易.好了不废话了直接贴代码. 调用的服务类:  1     [ServiceContra ...

  10. 解决js跨域调用WebApi的问题

    解决js跨域调用WebApi的问题 参考文章: (1)解决js跨域调用WebApi的问题 (2)https://www.cnblogs.com/qubernet/p/6396295.html 备忘一下 ...

最新文章

  1. python字符编码讲解_python 字符编码讲解
  2. vector中erase函数
  3. 转 Oracle 删除表,oracle 中删除表 drop delete truncate 的区别
  4. 阿里云中间件技术 促进互联网高速发展
  5. python写gui导入图片并处理_Python图像处理库:Pillow 初级教程
  6. 大数据标签获取处理步骤_大数据处理分为哪些步骤
  7. Python如何打包EXE可执行文件
  8. 最后一条记录_幸好朋友圈没有访客记录。
  9. 使用双向链表构建二叉树_python:26.二叉搜索树与双向链表
  10. Python笔记-OpenCV图像处理和人脸识别
  11. 创新设计思维总结报告
  12. linux给文件夹图标,Linux 如何在启动器中自定义图标
  13. 经济适用型北京生活经验分享,80后北漂看过来
  14. 美团旅行数据质量监管平台实践
  15. c语言常用颜色种类,C语言常用颜色种类(国外英语资料).doc
  16. 计算机显示器分辨率,现在电脑的主流显示器的分辨率一般是多大?
  17. 如何绘制论文中的图表?
  18. 字蛛(FontSpider,中文字体压缩器)网页自由引入中文字体
  19. Virtualbox源码分析22 NEM(Hyper-V兼容)3 Emulation Thread
  20. IE去除“是否停止运行此脚本?此页面上的脚本造成Internet Explore运行速度减慢”的提示信息

热门文章

  1. 求解二次规划问题——外点罚函数法/内点罚函数法
  2. c语言的整形变量选择题,C语言选择题 (附答案)
  3. python用什么数据库比较好_Python和主流数据库
  4. 电子签名市场,CA、混合云、SaaS三路混战
  5. 搞懂激活函数(Sigmoid/ReLU/LeakyReLU/PReLU/ELU)
  6. Freeimage-3.18.0编译(静态库)
  7. java读取txt文件字符串_java读取txt文件,对字符串进行操作后导出txt文件
  8. C语言中16进制转字符串字符串转16进制
  9. 基于STM32的自由度云台运动姿态控制系统
  10. 如何从网页上下载内嵌的PDF文件