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方法参数是引用调用还是值调用?

    Java方法参数是引用调用还是值调用? 在Java中,方法参数的传递方式可以分为值传递和引用传递两种方式。这是一个比较常见的问题,特别是在面试中,经常会被问到。在回答这个问题之前,我们需要对Java中的变量和内存进行一些基本的了解。 变量和内存 变量和内存是Java中的两个比较重要的概念。内存是计算机用来存储数据的地方,变量则是程序用来代表数据的符号,可以看…

    Java 2023年5月26日
    00
  • 详解AngularJs与SpringMVC简单结合使用

    详解AngularJs与SpringMVC简单结合使用攻略 1. 基本介绍 AngularJS 是一个非常流行的前端框架,提供了很多便捷的功能,比如:双向数据绑定、动态页面加载、表单验证等。而 SpringMVC 是一个非常流行的 Java Web 框架,它提供了很多便捷的功能,比如:MVC 设计模式、请求映射、数据绑定等。将 AngularJS 和 Spr…

    Java 2023年6月15日
    00
  • java之CSV大批量数据入库的实现

    Java之CSV大批量数据入库的实现 背景 在实际项目中,常常需要处理大量的数据,而CSV格式是一种很常见的数据格式,因此对于CSV数据进行入库操作是非常必要的。本文将介绍如何使用Java实现CSV大批量数据入库的实现。 准备工作 在开始正文之前,我们需要进行几个工作: 导入相关依赖 在项目中需要使用opencsv来解析CSV文件,因此需要在maven或gr…

    Java 2023年5月20日
    00
  • SpringBoot启动器Starters使用及原理解析

    SpringBoot启动器Starters使用及原理解析 Spring Boot是一个快速、方便的构建Spring应用程序的框架,它提供了一系列的启动器(Starters)来帮助我们快速引入一些常用的依赖包。Starters的作用就是提供一个快速的方式来导入一个或多个依赖包,它不仅简化了我们的配置过程,还有助于保持我们的应用程序的兼容性和依赖性。 Start…

    Java 2023年5月15日
    00
  • hibernate-validator如何使用校验框架

    下面是详细讲解“hibernate-validator如何使用校验框架”的完整攻略。 简介 hibernate-validator是一款基于Java Bean Validation标准的校验框架,能够轻松地将校验逻辑应用到JavaBean中,大大提高开发效率,减少出错几率。 使用步骤 1. 引入依赖 在项目的pom.xml文件中添加如下依赖配置: <d…

    Java 2023年5月20日
    00
  • 详解java模板和回调机制

    当我们在编写一些框架或者类库时,经常会用到模板和回调机制。在Java中,模板指的是一个通用的算法框架,其中某些步骤可以由子类实现,而回调指的是让对象调用一个指定的方法来进行操作。 一、什么是模板 模板是一种设计模式,它可以让你定义一组算法,并允许子类为一个或多个步骤提供实现。模板模式让子类在不改变算法结构的情况下重定义算法中的某些步骤,它可以使算法的结构保持…

    Java 2023年5月26日
    00
  • SpringBoot+SpringSecurity+jwt实现验证

    下面我会提供一个基于Spring Boot、Spring Security 和 JSON Web Token(JWT)的认证示例。 一、什么是JWT JSON Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种简单的、自包含的方式,用于在通过网络进行传输的两个实体之间安全传递信息。它被称为自包含是因为JWT包含了所有身份验证(Aut…

    Java 2023年5月20日
    00
  • 基于java Servlet编码/异常处理(详解)

    基于Java Servlet编码/异常处理(详解) 什么是Servlet? Servlet是Java语言编写的、在服务器端运行的小程序。它们是动态Web页面的重要组成部分。Servlet在Java中的定位和CGI在C++中的定位相似,只不过Servlet是基于Java的安全性和跨平台性等特点开发出的一种CGI形式。 Servlet程序可以生成一个动态网页,也…

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