vue3+cli-service配置代理,跨域请求

一、配置代理端口和代理转发

在vue.config.js文件中 

const {defineConfig} = require('@vue/cli-service')
 
module.exports = defineConfig({
    devServer: {
        host: '0.0.0.0',
        port: 8088,  // 启动端口号
        proxy: {
            '/api': { 
                // 请求接口中要替换的标识
                target: '', 
                // 代理地址,后端地址
                ChangeOrigin: true, 
                // 是否允许跨域
                pathRewrite: {
                    '^/api': '' 
                // 这里理解成用‘/api’代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://40.00.100.100:3002/user/add',直接写‘/api/user/add’即可
                }
            }
        }
    }
})

二、配置接口请求

是一个http.js文件,根据自己需求放在适合的文件夹里,文件名自己也可以定义

import axios from 'axios'
const isDev = process.env.NODE_ENV === 'development'
const instance = axios.create({
  //TODO 部署修改线上地址
  // baseURL: isDev ? 'http://localhost:8088/api' : '线上地址',
  baseURL: '/api',
  timeout: 10000,
  withCredentials: true,
})

// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    // 前端发送请求成功
    const res = response.data

    //根据返回的code值来做不同处理
    // 请求失败,返回错误信息
    if (res.code !== 0) {
      // 未登录跳转登录页面
      if (res.code === 40100) {
        const redirectUrl = window.location.href
        window.location.href = `/user/login?redirect=${redirectUrl}`
      }
      console.error('request error', res.message)
      return res.message
    }
    return res
  },
  function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    return Promise.reject(error)
  },
)

/**
 * get请求
 * @param url 请求地址
 * @param params 请求参数
 */
export function getRequest(url, params) {
  return instance({
    method: 'GET',
    url: `${url}`,
    params: params,
  })
}

/**
 * post请求
 * @param url 请求地址
 * @param data 请求数据
 * @returns {Promise}
 */
export function postRequest(url, data) {
  return instance({
    method: 'POST',
    url: `${url}`,
    data,
  })
}

export default instance

在api/indexjs文件里使用

import { getRequest, postRequest } from '@/plugins/requestConfig'

export const userLogin = (params) => {
  return postRequest('/user/login', params)
}

注意:

1、代理地址target后面不要加注释,线上可能会报错

2、本地测试的时候baseURL: '/api'和proxy里的'/api'名字保持一致,且必须有不然会报跨域

3、pathRewrite里的'^/api': '' "跟后端保持一致,如果后端接口里有api可以不用加,如果没有则需要进行该处理,不然接口请求会报404,

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Error: Cannot find module '@vue/cli-plugin-babel' Require stack: - D:\code-project\CS297390_20220228170923\client_home\node_modules\.store\@vue+cli-service@4.5.19\node_modules\@vue\cli-service\lib\Service.js - D:\code-project\CS297390_20220228170923\client_home\node_modules\.store\@vue+cli-service@4.5.19\node_modules\@vue\cli-service\bin\vue-cli-service.js at Module._resolveFilename (node:internal/modules/cjs/loader:1075:15) at Module._load (node:internal/modules/cjs/loader:920:27) at Module.require (node:internal/modules/cjs/loader:1141:19) at require (node:internal/modules/cjs/helpers:110:18) at idToPlugin (D:\code-project\CS297390_20220228170923\client_home\node_modules\.store\@vue+cli-service@4.5.19\node_modules\@vue\cli-service\lib\Service.js:145:14) at D:\code-project\CS297390_20220228170923\client_home\node_modules\.store\@vue+cli-service@4.5.19\node_modules\@vue\cli-service\lib\Service.js:184:20 at Array.map (<anonymous>) at Service.resolvePlugins (D:\code-project\CS297390_20220228170923\client_home\node_modules\.store\@vue+cli-service@4.5.19\node_modules\@vue\cli-service\lib\Service.js:170:10) at new Service (D:\code-project\CS297390_20220228170923\client_home\node_modules\.store\@vue+cli-service@4.5.19\node_modules\@vue\cli-service\lib\Service.js:32:25) at Object.<anonymous> (D:\code-project\CS297390_20220228170923\client_home\node_modules\.store\@vue+cli-service@4.5.19\node_modules\@vue\cli-service\bin\vue-cli-service.js:15:17) { code: 'MODULE_NOT_FOUND', requireStack: [ 'D:\\code-project\\CS297390_20220228170923\\client_home\\node_modules\\.store\\@vue+cli-service@4.5.19\\node_modules\\@vue\\cli-service\\lib\\Service.js', 'D:\\code-project\\CS297390_20220228170923\\client_home\\node_modules\\.store\\@vue+cli-service@4.5.19\\node_modules\\@vue\\cli-service\\bin\\vue-cli-service.js' ] }
05-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值