axios实现跨域及突破host和referer的限制
网上的都是老版的配置,找了好久终于解决了,这个时webpack4的配置跨域请求设置以qq音乐为例vue.config.jsdevServer: {proxy: { // 代理跨域'/api': { // 代理url关键字target: 'https://c.y.qq.com', // 需要代理的地址secure: false...
·
跨域请求设置
以qq音乐为例
- 配置vue.config.js
devServer: {
proxy: { // 代理跨域
'/api': { // 代理url关键字
target: 'https://c.y.qq.com', // 需要代理的地址
secure: false, // 如果是https接口,需要配置这个参数
changeOrigin: true, // 是否跨域
pathRewrite: {
'^/api': ''
}
},
'/pc': { // 代理url关键字
target: 'https://u.y.qq.com', // 需要代理的地址
secure: false, // 如果是https接口,需要配置这个参数
changeOrigin: true, // 是否跨域
pathRewrite: {
'^/pc': ''
},
// 突破host和origin的限制
headers: {
referer: 'https://y.qq.com/',
origin: 'https://y.qq.com'
}
}
}
- ajax请求
import axios from 'axios'
// 获取轮播图数据
export function banner () {
return axios({
method: 'get',
url: '/api/musichall/fcgi-bin/fcg_yqqhomepagerecommend.fcg',
params: {
// 参数
}
})
}
// 获取歌曲列表
export function songList () {
const url = '/pc/cgi-bin/musicu.fcg'
const data = Object.assign({}, commonParams, {
loginUin: 0,
hostUin: 0,
platform: 'yqq.json',
needNewCode: 0,
data: JSON.stringify({
'comm': { 'ct': 24 },
'playlist': {
'method': 'get_playlist_by_category',
'param': {
'id': 3317,
'curPage': 1,
'size': 40,
'order': 5,
'titleid': 3317
},
'module': 'playlist.PlayListPlazaServer'
}
}),
...commonParams
})
return axios({
method: 'get',
url: url,
params: data
})
}
注意请求的路径后面跟的参数一定要用params传递
- 在需要的组件内调用
import { banner, songList } from '../../api/store'
export default {
data () {
return {
bannerList: [],
songList: []
}
},
created () {
this.getBanner()
this.getSongList()
},
methods: {
getBanner () {
banner().then(res => {
if (res.status === 200) {
this.bannerList = res.data.data.slider
}
})
},
getSongList () {
songList().then(res => {
if (res.status === 200) {
this.songList = res
}
})
}
}
}
更多推荐
已为社区贡献7条内容
所有评论(0)