vue跨域 使用 http-proxy-middleware 代理解决(项目使用vue-cli3.0搭建)

本文介绍了在Vue CLI3.0项目中,如何利用http-proxy-middleware解决跨域问题。通过创建server.js配置代理,并在config.js中设置相应配置,实现从QQ音乐获取数据的跨域请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue跨域 使用 http-proxy-middleware 代理解决(项目使用vue-cli3.0搭建)

最近在模仿用Vue来搭建一个音乐播放器,用的是最新Vue.cli3来进行搭建的,要从QQ音乐来获取数据,那在之前的方法是用node的express框架起了一个服务设置了跨域,这种方法适用于vue2.x,那么在vux.3.0中呢,项目结构的目录是这样滴

在这里插入图片描述
所以呢,不能像在vue2.0里面有个build文件里面,写一些对应的跨域请求,需要在项目根目录里面重新写一个config.js文件,具体的可以看看官方文档

那么直接说方法了,(这是用来个人记录的…还说那么多屁话ε=(´ο`))))*

首先,需要下载http-proxy-middleware,创建一个server.js文件,代码如下

const express = require('express');
const proxy = require('http-proxy-middleware');

const app = express();
app.use('/static', express.static(`${__dirname}/static`));
app.use('/api/getDiscList', proxy({
  target: 'https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg',
  changeOrigin: true,
}));

app.get('/*', (req, res) => {
  res.sendFile(`${__dirname}/index.html`);
});
app.listen(8080);

其次,在config.js里面写对应的配置代码

module.exports = {
  devServer: {
    port: '8089', // 端口号设置
    proxy: {
      '/api/getDiscList': {
        target: 'https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg', // target host
        ws: true, // proxy websockets
        bypass: function (req, res, proxyOptions) {
          req.headers.referer = 'https://c.y.qq.com/'
          req.headers.host = 'c.y.qq.com'
        },
        changeOrigin: true,  // needed for virtual hosted sites
        pathRewrite: {
          '^/api/getDiscList': ''  //rewrite path
        }
      },
    }
  },
}

最后,写相对应的aixos请求数据的代码就行啦

export function getDiscList() {
  const url = 'api/getDiscList';
  const data = Object.assign({}, {
    g_tk: 5381,
    notice: 0,
    inCharset: 'utf8',
    outCharset: 'utf-8',
    platform: 'yqq',
    hostUin: 0,
    sin: 0,
    ein: 29,
    sortId: 5,
    categoryId: 10000000,
    needNewCode: 0,
    rnd: Math.random(),
    format: 'json'
  });

  return axios.get(url, {
    params: data
  }).then(res => {
    return Promise.resolve(res.data)
  })
}

现在就可以拿到快乐的数据啦

这个方法是用来自己记录的,希望能帮到一些同学,写的不咋样多谅解哈,靴靴

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值