前端通过代理的方式解决跨域和访问不同的端口

这边有两个后端api,api的端口不同

//后端接口api
http://localhost:8386/pay/list
http://localhost:8080/app/msg
访问前端页面的路径
http://localhost:3000

在前端设置axios的基本参数

// 由于同源策略,前端不能直接调用后端接口会有跨域问题
// 跨域解决方案 1、前端配置代理 2、后端设置请求头,这边演示前端解决办法
// 我们设置axios的baseURL为前端路径,这样不会触发跨域。
const service = axios.create({
    baseURL: 'http://localhost:3000',
    timeout: 10000,
    withCredentials: true,
  })  

编写调用api的请求
app.js

import request from './request'
const baseURL = '/app';
export const getMsg = () => {
   return request.get(baseURL+'/msg');
}
我们调用这个方法的完整路径是 
localhost:3000/app/msg

pay.js

import request from './request'
const baseURL = '/pay';
export const getList = () => {
   return request.get(baseURL+'/list');
}
 我们调用这个方法的完整路径是 
localhost:3000/pay/list

这两个路径不能直接访问到后端接口因为是前端自己访问自己,我们需要设置代理,让请求转发到指定的后端接口api
在 vue.config中的配置

export default defineConfig({
  plugins: [vue()],
  server:{
    port:3000,
    open: true,
    proxy: {
    //我们前端完整路径localhost:3000/app/msg
    //请求转发:如果是app开头的请求,就转发到指定的域名
    //转发到的接口 http://localhost:8080/app/msg,直接访问到指定的后端api
      '/app': {
        target: 'http://localhost:8080/', // 后端接口的域名
        changeOrigin: true,
        rewrite: path => path.replace(/^\/app/, 'app'),
      },

//同理,pay开头的请求路径转发到指定api
      '/pay': {
        target: 'http://localhost:8386/', // 后端接口的域名
        changeOrigin: true,
        rewrite: path => path.replace(/^\/pay/, 'pay'),
      },
    },
  }
})

结果展示
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值