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

9,676 阅读1分钟

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

一、什么是代理?

字面意思可以理解为中间商,开启代理,原理就是在本地创建一个虚拟服务器,发送请求数据,同时接受请求的数据,利用服务器与服务器间,交互,不会有跨域问题,也是完全只靠前端自己独立解决跨域的方式。

以Vue-cli3实例

我现在需要请求的接口是如下:

https://www.baidu.com/api/search/get

然后我们在vue.config.js文件中设置proxy

  devServer: {
        proxy:{
          "/api": {
              target: "http://www.baidu.com", // 当我们发送请求时的URL中有/api时,会将在/api前面的路径替换成target的值。
              changeOrigin: true, //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
              pathRewrite: {  //重写匹配的字段,如果不想出现在请求路径上,可以重写为""
                  "^/api": "/api"
              }
          },   
      },
  }

当我们创建Axios时,设置baseURL如下

    const service = axios.create({
      baseURL: /api, /* 定义请求路径的前缀 */
      timeout: 5000 /* 定义超时时间 */
})

创建的请求

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

此时你发送的请求路径会被拼接为target+baseURL+url

http://www.baidu.com/api/search/get

当你想要配置多个代理时,只需设置多个匹配字段即可

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

创建Axios时,设置baseURL如下

    const service = axios.create({
      baseURL: /,
      timeout: 5000
})

创建的请求

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