vue之proxyTable代理超全面配置流程

Vue之proxyTable代理超全面配置流程

概述

Vue.js 是一个构建数据驱动的 web 界面的渐进式框架,使用 Vue 开发前端项目时,经常遇到需要向后端接口发起 HTTP 请求的情况。由于前端和后端常常处于不同的服务器上,因此需要解决跨域的问题。本文将介绍在 Vue 项目中使用 proxyTable 进行接口代理的配置流程。

步骤

步骤一:在webpack配置文件中进行proxyTable的配置

Vue CLI 生成的项目通常使用的是 webpack 对前端资源进行打包和构建。我们需要在项目根目录下找到 build/webpack.dev.conf.js 文件,在这个文件中增加代理配置。示例代码如下:

module.exports = {
  // ...
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:8888',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    },
    // ...
  }
}
  • /api:表示匹配到以 /api 开头的请求路径(例如 /api/user
  • target:设置目标服务器的地址,这里表示代理到本地 8888 端口
  • changeOrigin:是否改变源端口号,例如本地开发时需要将请求发送到服务器(target指定)的/api路径上,那么需要将此项设置为 true,否则设置为 false
  • pathRewrite:用于将匹配到的路径重写,这里表示将 /api 重写为 ''(空字符串)

步骤二:在前端代码中发起请求

经过了代理配置,我们在前端页面中发起请求的时候,只需要将请求发到代理服务器的地址上就行了,例如:

axios.get('/api/user').then((res) => {
  // ...
})

这样的方式,请求会被代理服务器转发到目标服务器的 /user 路径。在前端代码中,我们只需要关心请求到的是 /api 路径上的资源,而对于跨域问题的解决,全部交给了代理服务器去处理。

常见问题

1. 代理服务器和目标服务器都在同一个地方,是否也需要进行代理设置?

在同一台机器上的前端和后端代码使用代理服务器进行请求的话,这种情况下,是没有必要进行代理设置的。可以直接使用接口路径进行请求,这种情况下不会存在跨域问题。

2. 代理服务器和目标服务器不在同一个地方,如何解决证书问题?

在开发中,使用的证书通常是自签名的,在代理服务器上进行转发时可能会出现证书问题导致请求被错误拦截。此时,需要在代理服务器上添加以下代码:

httpsAgent: new https.Agent({
  rejectUnauthorized: false
})

示例代码:

module.exports = {
  // ...
  devServer: {
    proxy: {
      '/api': {
        target: 'https://www.example.com',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        },
        httpsAgent: new https.Agent({
          rejectUnauthorized: false
        })
      }
    },
    // ...
  }
}

这样就可以设置代理服务器不验证 SSL 证书。

示例说明

示例一:代理服务器和目标服务器位于同一个主机

假设代理服务器部署在 localhost3000 端口,目标服务器部署在 localhost8888 端口,我们可以采用以下配置:

module.exports = {
  // ...
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:8888',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    },
    // ...
  }
}

这样,在前端代码中,只需要将请求发往代理服务器即可:

axios.get('/api/user').then((res) => {
  // ...
})

示例二:代理服务器和目标服务器不在同一台机器

假设代理服务器部署在 localhost3000 端口,目标服务器部署在外网,我们可以采用以下配置:

module.exports = {
  // ...
  devServer: {
    proxy: {
      '/api': {
        target: 'https://www.example.com',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        },
        httpsAgent: new https.Agent({
          rejectUnauthorized: false
        })
      }
    },
    // ...
  }
}

这样,在前端代码中,只需要将请求发往代理服务器即可:

axios.get('/api/user').then((res) => {
  // ...
})

总结

通过配置 proxyTable 代理,我们可以将前端应用和后端接口分离,从而专注于开发和维护自己的模块。在开发时,我们可以直接使用接口路径进行请求,而不必关心跨域等问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue之proxyTable代理超全面配置流程 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Java函数式编程(六):Optional

    Java函数式编程(六):Optional Optional简介 在Java 8中,Optional成为了一个非常重要的新特性。Optional是一个容器类型,代表一个值存在或不存在。Original Java中,我们经常返回null来表示一个空值。但是在Java 8 中使用Optional来表示一个值不存在更加明确和安全。 Optional 类(java.…

    Java 2023年5月26日
    00
  • java实现可视化日历

    下面是java实现可视化日历的完整攻略。 1.获取用户输入的年份和月份 在程序中,需要获取用户输入的年份和月份,才能正确地生成日历。可以通过Scanner类实现从控制台读取用户输入,示例代码如下: import java.util.Scanner; public class CalendarGenerator { public static void mai…

    Java 2023年5月20日
    00
  • Java中关于http请求获取FlexManager某设备分组监控点

    在Java中发送HTTP请求,可以使用Java内置的HttpURLConnection类或者第三方库如OkHttp、HttpClient等。以下是获取FlexManager某设备分组监控点的攻略。 准备工作 在发送HTTP请求前,需要导入相应的依赖包,例如使用OkHttp时,需要在pom.xml中添加以下依赖: <dependency> <…

    Java 2023年5月26日
    00
  • Java字符串详解的实例介绍

    Java字符串详解的实例介绍 引言 Java中的字符串是最常用的数据类型之一,对于Java开发者来说熟练掌握字符串处理技巧是至关重要的。本文将详细介绍Java字符串的相关知识和实例,帮助读者更好地理解字符串的处理方法。 Java字符串的声明 Java字符串可以通过传统的字符串字面量声明和new关键字声明两种方式。 字符串字面量 字符串字面量是包含在两个双引号…

    Java 2023年5月23日
    00
  • springboot配置Jackson返回统一默认值的实现示例

    下面是“springboot配置Jackson返回统一默认值的实现示例”的完整攻略。 1. 什么是Jackson Jackson是Java中主流的JSON解析库之一,用于Java对象和JSON数据之间的序列化和反序列化。在Spring Boot框架中,常用Jackson来将Java对象转换成JSON格式的数据,以便于前端页面对数据进行展示和处理。 2. 什么…

    Java 2023年5月26日
    00
  • 手动实现将本地jar添加到Maven仓库

    在 Maven 中,本地 jar 包的依赖需要添加到 Maven 仓库中才能被项目引用。如果 jar 包不在中央仓库中,需要手动将其添加到本地仓库中。本地 jar 包添加到 Maven 仓库有两种方法:手动添加、使用 Maven 命令。 手动添加 手动添加是将本地 jar 包拷贝到指定 Maven 仓库的一个仓库目录中。 首先,找到 Maven 仓库的位置。…

    Java 2023年5月20日
    00
  • 解析:ClickOnce通过URL传递参数 XXX.application?a=1

    ClickOnce是一种基于浏览器和.NET Framework的技术,可以方便的分发和安装Windows应用程序。在ClickOnce应用程序中,我们可以通过URL传递参数,在打开程序时就自动加载所需要的数据或执行相应的操作。以下是解析ClickOnce通过URL传递参数的完整攻略。 1. 理解ClickOnce URL传递参数的格式 在ClickOnce…

    Java 2023年6月15日
    00
  • Java两整数相除向上取整的方式详解(Math.ceil())

    Java中两个整数相除可能不是整数,因此需要进行取整。向上取整就是将小数部分向上一位取整到最近的整数。 Math类提供了向上取整方法 ceil()。 方法定义 public static double ceil(double a) 参数 a:需要向上取整的数。 返回值 返回double类型,表示a向上取整的结果。 示例说明 示例1 接下来我们看一个例子:计算…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部