zoukankan      html  css  js  c++  java
  • [Vue音乐项目] 第五节 服务器代理跨域

    获取轮播图数据使用的是jsonp方法,然而获取歌单列表时,需要带上请求头部信息,此时用jsonp是无法做到的,需要使用node提供的服务器代理来间接获取数据,而axios不仅支持ajax请求,也支持服务器代理请求,接下来完成一次代理请求。

    1. 打开cmd命令行,敲写以下命令安装axios
      npm install axios --save-dev
      
    2. 打开src/api/recommend/index.vue文件,敲写以下代码
      //recommend/index.vue
      //导入刚才安装好的axios
      import axios from 'axios'
      ......
      //函数声明,跟getRecommend超不多
      function getDiscList() {
          //本地请求地址,会被代理
          var url = '/api/getDiscList'
          //参数整合
          var data = Object.assign({},commonParam,{
              platform: 'yqq',
              hostUin: 0,
              sin: 0,
              ein: 29,
              sortId: 5,
              needNewCode: 0,
              categoryId: 10000000,
              rnd: Math.random(),
              format: 'json
          })
          //发起代理请求,以promise形式返回请求结果
          return axios.get(url,{params:data},(res)=>{
              return Promise.resolve(res.data)
          })
      }
      
    3. 打开根目录/config/index.js文件,敲写以下代码
      //config/index.js
      ...
      proxyTable: {
         //本地请求地址
        '/api/getDiscList': {
          //实际请求地址,即localhost:8080/api/getDiscList会请求下面的地址 
          target: 'https://c.y.qq.com/splcloud/fcgi-bin/fcg_get_diss_by_tag.fcg',
          //发送请求前的处理函数,在这里加上必要的请求头部信息
          bypass: function(req,res,proxyOptions) {
            req.headers.referer = 'https://c.y.qq.com';
            req.headers.host = 'c.y.qq.com';
          },
          //路径重写,可无
          pathRewrite: {
            '^/api/getDiscList': ''
          }
        }
      },
      ...
      
    4. 打开src/components/recommend/index.vue文件,调用函数获取数据
      // recommend/index.vue
      
      //秉记先引用再使用的原则
      import {gerDiscList} from 'api/recommend'
      
      export default {
          //在实例挂载后的钩子函数里调用
          mounted() {
              this._getRecommend()
          }
          methods: {
              _getDiscList() {
                //调用引入的函数
                getDiscList().then((res)=>{
                    if(res.code == ERR_OK) {
                        //this.list = res.data.list
                        console.log(this.list)
                    }
                })
              },
          }
      }
      
      
      
  • 相关阅读:
    Flex的 Event中属性currentTarget与target的差别
    考研复试机试题(2010)
    Android应用性能优化之使用SparseArray替代HashMap
    机房收费重构版总结
    中英文对照 —— 缩略词
    NLP(paper + code)
    NLP(paper + code)
    优化与凸优化初始
    优化与凸优化初始
    工具类与工具函数 —— 素数相关
  • 原文地址:https://www.cnblogs.com/juetan/p/13861261.html
Copyright © 2011-2022 走看看