proxy代理的使用(解决跨域配置多个代理)

9 篇文章 0 订阅

proxy代理的使用(解决跨域,配置多个代理)
一、什么是代理
字面意思就是类似中间商,开启代理,原理就是在本地创建一个虚拟服务器,发送请求数据,同时接受请求的数据,

利用服务器与服务器间,交互,不会有跨域问题,也是完全只靠前端自己独立解决跨域的方式

以vue cli3示例
我现在需要在本地请求接口

//  cli3     vue.config.js
  devServer: {
    proxy:{
      "/api": {
          target: "http://www.xiongmaoyouxuan.com", // 需要代理的域名
           ws: false, // 是否启用websockets
          changeOrigin: true, //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求							的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
          pathRewrite: {  //重写匹配的字段,如果不需要在请求路径上,重写为""
              "^/api": "/api"
          }
      },
   
  },
  }




  //cli2的放在config文件夹中的index.js  中
    dev: {
    proxyTable:{
      "/api": {
          target: "http://www.xiongmaoyouxuan.com", // 需要代理的域名
           ws: false, // 是否启用websockets
          changeOrigin: true, //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求							的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
          pathRewrite: {  //重写请求路径上匹配到的字段,如果不需要在请求路径上,重写为""
              "^/api": "/api",
              "demo.json": "index.json"
          }
      },
  },
  }

在创建axios的时候,beseURL这样配置

const ajax = axios.create({
    baseURL:"/api",
    timeout: 6000,//请求超时时间
})

创建的请求

export function getData() { //get
  return request({
    url: '/search/home',
    method: 'GET'
  })
}

这样匹配到这个字段时就会代理到target去,将target添加到/前面,在根据pathRewrite,然后是你请求的ajax
意思大概就是,你的beseURL加上你请求的url满足proxy的匹配,那你的代理就是没问题的
同时处理的也是匹配到的部分。
这样虚拟服务器请求的的就是

http://www.xiongmaoyouxuan.com/api/search/home

但你本地看见的请求地址可能是这样的

配置多个代理

只需让你本地请求,满足代理的规则即可

    proxy:{
      "/api": {
          target: "http://www.xiongmaoyouxuan.com", 
          // ws: true, 
          changeOrigin: true
          pathRewrite: {
              "^/api": "/api"
          }
      },
      "/user": {
          target: "http://www.xiongmaoyouxuan.com",
          // ws: true, 
          changeOrigin: true
          pathRewrite: {
              "^/user": "/api"
          }
      },
   
  }, 

在创建axios的时候,beseURL这样配置

const ajax = axios.create({
    baseURL:"/",
    timeout: 6000,//请求超时时间
})

创建的请求


export function getData() { //get
  return request({
    url: 'api/search/home',
    method: 'GET'
  })
}
export function getData1() { //get
  return request({
    url: 'user/search/home',
    method: 'GET'
  })
}


上述2个接口,通过代理请求的是同一个接口。这样看是否更好的理解了代理。有疑问可以在评论区告诉笔者

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用方法二中的创建代理配置文件来配置多个代理。在创建代理配置文件时,可以指定多个代理规则,每个规则对应一个代理目标。例如,可以创建一个名为proxy.config.js的文件,内容如下: ```javascript module.exports = { '/api1': { target: 'http://localhost:3000', changeOrigin: true, pathRewrite: { '^/api1': '' } }, '/api2': { target: 'http://localhost:4000', changeOrigin: true, pathRewrite: { '^/api2': '' } } } ``` 然后在vue.config.js中引入该配置文件,并将其作为devServer的proxy属性的值: ```javascript const proxyConfig = require('./proxy.config.js'); module.exports = { devServer: { proxy: proxyConfig } } ``` 这样就可以配置多个代理了。例如,当发送请求到`/api1`时,会被代理到`http://localhost:3000`;当发送请求到`/api2`时,会被代理到`http://localhost:4000`。 #### 引用[.reference_title] - *1* [vue配置proxy跨域代理](https://blog.csdn.net/weixin_68658847/article/details/128601635)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [React中使用proxy配置代理解决跨域问题](https://blog.csdn.net/yrqlyq/article/details/119649415)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值