vue使用反向代理解决跨域问题方案

使用反向代理可以解决vue应用中遇到的跨域问题。下面是具体的攻略:

1. 安装http-proxy-middleware

在vue cli 3的脚手架中,已经默认安装了http-proxy-middleware依赖,无需再次安装。如果是手动创建的vue项目,则需要使用npm或yarn进行安装:

npm install http-proxy-middleware --save-dev

2. 配置反向代理

在vue.config.js文件中,为webpack dev server服务配置反向代理(vue cli 3的脚手架中已经配置好了):

module.exports = {
  devServer: {
    proxy: {
      '/api': {  // 请求地址中包含/api的请求都会被转发到target,其中/api会被去掉
        target: 'http://localhost:3000',
        changeOrigin: true,  // 支持跨域
        pathRewrite: {
          '^/api': ''  // 将/api替换为空字符串
        }
      }
    }
  }
}

3. 在页面中使用代理

接下来,我们就可以使用代理进行请求了。在vue的组件中,使用相对地址请求:

axios.get('/api/data').then(res => {
  console.log(res.data)
})

以上代码中,axios会将请求发送到代理服务器中,并将地址从/api/data转换为http://localhost:3000/data来发送请求。服务器(Node.js)将处理请求并返回数据,最后由代理服务器将数据返回给前端。

示例说明

下面是两个示例说明,分别使用不同的反向代理方式。

示例1:代理本地Node.js服务器

在这个示例中,我们使用代理将请求发送到本地的Node.js服务器上。
假设Node.js服务器在http://localhost:3000上运行,而vue cli 3的开发服务器运行在http://localhost:8080上。我们可以这样配置反向代理(在vue.config.js文件中):

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

现在,我们可以使用相对地址发送到api请求,例如:

axios.get('/api/data').then(res => {
  console.log(res.data)
})

这将代理到http://localhost:3000/data并获得服务器数据。

示例2:代理外部API

在这个示例中,我们将请求代理到外部的API,以https://api.example.com/为例。

module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'https://api.example.com/',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
}

在组件中,使用相对地址请求数据:

axios.get('/api/data').then(res => {
  console.log(res.data)
})

以上代码将代理到https://api.example.com/data处并返回数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue使用反向代理解决跨域问题方案 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 手把手教你如何开发属于自己的一款小程序

    “手把手教你如何开发属于自己的一款小程序” 一、准备工作 1. 注册小程序账号 在开发小程序前,首先需要在微信公众平台上注册小程序账号。 2. 安装开发工具 微信官方提供了小程序开发工具,可在官网下载并安装:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 3. 创…

    Vue 2023年5月28日
    00
  • vue使用echarts图表的详细方法

    当我们需要在Vue项目中使用Echarts图表时,需要进行以下步骤: 安装echarts和vue-echarts 使用npm或yarn安装: npm install echarts vue-echarts yarn add echarts vue-echarts 在Vue项目中引入echarts和vue-echarts 在需要使用Echarts图表的Vue组…

    Vue 2023年5月29日
    00
  • Vue.js 中的实用工具方法【推荐】

    首先,我们需要了解什么是Vue.js中的实用工具方法,Vue.js中的实用工具方法是指Vue.js框架提供的一些通用工具函数,可以帮助我们更轻松地实现一些常见的功能。这些工具方法大多数被封装在Vue.js的全局对象Vue上。 下面是Vue.js中常用的实用工具方法: Vue.nextTick() Vue在更新数据后,DOM并不会立即被更新,而是异步更新DOM…

    Vue 2023年5月27日
    00
  • Vue mockjs编写假数据并请求获取实现流程

    Vue MockJS是一款用于前端mock数据的工具。其可以模拟请求API返回假数据,用于前端开发时进行数据调试、测试。本文将详细介绍Vue MockJS编写假数据并请求获取的实现流程。 1. 安装Vue MockJS 在使用Vue MockJS之前,需要确保在项目中已经安装了Vue,接着可以通过npm或yarn来安装Vue MockJS。 # 使用npm进…

    Vue 2023年5月28日
    00
  • 解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题

    解决vue-quill-editor上传内容中图片base64字符串过长的问题,有以下几种方式: 1. 使用quill-image-extend-module quill-image-extend-module是一个扩展模块,它可以让quill-editor支持图片上传。它会将上传的图片文件转换成base64格式,然后插入到编辑器内容中,这会导致编辑器内容变…

    Vue 2023年5月27日
    00
  • vue.js实例对象+组件树的详细介绍

    “Vue.js实例对象+组件树的详细介绍”是Vue.js框架的基础内容之一,它关乎着构建整个Vue.js应用程序的基本理解。在本文中,我将详细介绍Vue.js实例对象和组件树的概念,以及如何创建和使用它们。 Vue.js实例对象 Vue.js实例对象是一个VM(ViewModel)的实例,VM是Vue.js框架的核心概念,它也是MVVM(Model-View…

    Vue 2023年5月28日
    00
  • ant design vue 表格table 默认勾选几项的操作

    Ant Design Vue 表格(Table)默认勾选几项的操作,可以通过在表格数据中为需要默认勾选的行数据添加一个 selected 属性,并且在表格操作栏添加一个全选按钮,并将其与表格的 rowSelection 属性绑定起来即可实现。 以下是完整的实现步骤: 设置表格数据源 首先,需要设置表格的数据源,可以使用一个数组对象来模拟,示例代码如下: da…

    Vue 2023年5月28日
    00
  • vue directive全局自定义指令实现按钮级别权限控制的操作方法

    实现按钮级别权限控制是一个非常常见的需求。通过vue directive全局自定义指令可以方便地实现此功能。以下是具体的操作方法: 1. 创建Vue全局指令 我们使用Vue.directive注册一个全局指令。具体实现方法如下: Vue.directive(‘permission’, { // 在成功绑定到元素时被调用 bind: function (el,…

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