使用Vue脚手架配置代理服务器的两种方式

这篇具有很好参考价值的文章主要介绍了使用Vue脚手架配置代理服务器的两种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 前言

本文主要介绍使用Vue脚手架配置代理服务器的两种方式

注意:Vue脚手架给我们提供了两种配置代理服务器的方式,各有千秋,使用的时候只能二选一,不能同时使用

2 代理

除了cros和jsonp,还有一种代理方式,这种用的相对来说也很多, 一般代理服务器

这个概念很好理解,相当于生活中的中介

在前后端直接配置一个代理服务器,这个代理服务器和前端处于一个位置,当前端向后端请求数据的时候,不会直接访问后端,而是找这台代理,代理收到前端的请求,转发给后端,如果收到后端的响应数据,就把这些数据返回给前端

代理服务器的方式有一个东西大家应该都听说过:nginx,但是nginx一般属于后端人员掌握的,这里使用一种对前端人员更加友好的技术:cli,没错,就是vue的脚手架,它就可以帮助我们代理服务器,相比nginx它简单的不能再简单了,只需要短短几行代码就可以搞定

vue脚手架配置方式1

既然想对脚手架进行配置,肯定要改一个文件,就是vue的配置文件:vue.config.js,肯定要在这里面写代码,然后代理服务器就开起来了,到底怎么写,可以参考官方文档:Vue脚手架代理
使用Vue脚手架配置代理服务器的两种方式
复制配置代码进行修改配置文件

注意:这里的端口是要请求后端的端口,并且只需要写到端口即可,我的后端端口是9090

// 开启代理服务器
devServer: {
  // 代理的端口是要请求后端的端口  写到具体的端口即可 不需要写具体的路径
  proxy: 'http://localhost:9090'
}

注意:这种代理简单,但是不完美,原因在下面

使用Vue脚手架配置代理服务器的两种方式
这样就配置了一个代理服务器,一定要重启脚手架

重启完成后再次访问,还是报错跨域问题!

使用Vue脚手架配置代理服务器的两种方式
注意:虽然已经配置了代理服务器,但是还没用到这个代理,所以请求的时候不应该是后端的端口9090,而是代理的端口8080,这里就要写全路径了,不能和配置代理服务器的时候一样只写端口了
使用Vue脚手架配置代理服务器的两种方式
再次访问,发现正常了,说明代理有效
使用Vue脚手架配置代理服务器的两种方式
这种代理有两个误区(坑),下面一一说明

两个误区(坑)

误区1

不能灵活的控制到底走不走代理

首先,这种代理不是什么都会代理给后端的,如果代理的东西前端有,就会直接返回,就不去找后端,比如下面这个例子

我在public目录写一个叫queryUserInfo的文件,没错,和后端的接口名称一样
使用Vue脚手架配置代理服务器的两种方式
使用Vue脚手架配置代理服务器的两种方式
这时候请求就会发现,找到前端的内容就不会访问后端了
使用Vue脚手架配置代理服务器的两种方式

误区2

这种代理只能代理一个服务器不能代理多个服务器,也就是说目前代理的8080只能把请求交给9090,不能转发给别人了

vue脚手架配置方式2

上面的代理方式,虽然简单,但是也有两个坑,不够完美,想要追求完美,还得是这种方式

那么这种方式怎么写呢?还是继续看官方文档:Vue脚手架代理

注意:这种配置代理和上面的配置代理只能二选一,不能同时使用!
使用Vue脚手架配置代理服务器的两种方式
把代码复制到配置文件,进行修改

devServer: {proxy: {'/api': {target: '<url>',ws: true,changeOrigin: true},'/foo': {target: '<other_url>'}}}

这里面有一些属性,有的属性可以配置使用,我们一一说明

注意:不管修改哪个属性,都要重启vue!

/api和target

/api指的是请求前缀 这里的api可以更改 不一定非要叫api

target指的是如果请求前缀匹配上了,那么就找代理服务器请求

比如现在我请求的路径不变还是上面的路径
使用Vue脚手架配置代理服务器的两种方式
那么还是一样的效果

使用Vue脚手架配置代理服务器的两种方式
这时候我把api前缀加上,理论来说可以了,但是还是不行
使用Vue脚手架配置代理服务器的两种方式
不过这次不是跨域的问题了,只是找不到请求
使用Vue脚手架配置代理服务器的两种方式

找不到请求是对的,因为的后端请求没有/api的前缀,那么如果忽略这个前缀呢?

pathRewrite

有这么一个属性,官方没有说:pathRewrite

         // 忽略前缀路径 它是一个对象 里面是key value
        // 这个正则意思是 如果前缀是/api,那么会替换成空字符
      pathRewrite:{'^/api':''}

使用Vue脚手架配置代理服务器的两种方式
这个时候再测试,发现正常
使用Vue脚手架配置代理服务器的两种方式

ws

ws是websocket的缩写,用于支持websocket,默认为true,本人对websocket不是很了解,所以不多叙述!

changeOrigin

用于控制请求头中的host值

或者说是否真实汇报自身情况 true不真实 false真实 一般为true,默认也是true

为什么这么说呢?我们通过下面案例查看,这时候我后端获取请求的主机信息,大家注意观察
使用Vue脚手架配置代理服务器的两种方式
使用Vue脚手架配置代理服务器的两种方式
改为false,好家伙,你小子反水是吧
使用Vue脚手架配置代理服务器的两种方式
使用Vue脚手架配置代理服务器的两种方式

配置多个代理

如果想要配置多个代理,直接复制一个即可,注意加上逗号,修改端口和前缀
使用Vue脚手架配置代理服务器的两种方式文章来源地址https://www.toymoban.com/news/detail-431994.html

3 vue脚手架配置代理总结

vue脚手架配置代理
方法一
在vue.config.js中添加如下配置:
devServer:{
  proxy:"http://localhost:5000"
}
说明:
1. 优点:配置简单,请求资源时直接发给前端(8080)即可。
2. 缺点:不能配置多个代理,不能灵活的控制请求是否走代理。
3. 工作方式:若按照上述配置代理,当请求了前端不存在的资源时,那么该请求会转发给服务器 (优先匹配前端资源)
方法二
编写vue.config.js配置具体代理规则:
module.exports = {
    devServer: {
      proxy: {
      '/api1': {// 匹配所有以 '/api1'开头的请求路径
        target: 'http://localhost:5000',// 代理目标的基础路径
        changeOrigin: true,
        pathRewrite: {'^/api1': ''}
      },
      '/api2': {// 匹配所有以 '/api2'开头的请求路径
        target: 'http://localhost:5001',// 代理目标的基础路径
        changeOrigin: true,
        pathRewrite: {'^/api2': ''}
      }
    }
  }
}
/*
   changeOrigin设置为true时,服务器收到的请求头中的host为:localhost:5000
   changeOrigin设置为false时,服务器收到的请求头中的host为:localhost:8080
   changeOrigin默认值为true
*/
说明:
1. 优点:可以配置多个代理,且可以灵活的控制请求是否走代理。
2. 缺点:配置略微繁琐,请求资源时必须加前缀。

到了这里,关于使用Vue脚手架配置代理服务器的两种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Vue 脚手架(打包工具)的理解 - 配置文件理解

    Vue 脚手架(打包工具)的理解 - 配置文件理解

    Vue 脚手架是 Vue 作为一个前端开发项目的最核心点,将 JavaScript 、 CSS 、 HTML 这几种前端自动整合,极大的简化了前端开发工作。 没有 Vue 脚手架,就没有 Vue ,这是一定的,Java 语言和C语言都需要编译,那么你可以将 Vue 脚手架看作是伪编译器吧,或者是伪解释器,当然伪解

    2024年02月06日
    浏览(10)
  • 使用Vue脚手架2

    使用Vue脚手架2

    ref属性 src/components/SchoolName.vue   src/App.vue   props配置项 src/App.vue src/components/StudentName.vue   注意:当props中与当前组件配置同名时, props中的配置优先级高于当前组件  mixin混入 1. 组件和混入对象含有同名选项 时,这些选项将以恰当的方式进行“合并”,在发生冲突时以 组件

    2024年02月12日
    浏览(9)
  • Vue脚手架使用【快速入门】

    Vue脚手架使用【快速入门】

    在黑窗口中输入vue ui命令 再更改完路径地址后需要按回车 第一种可以在黑窗口输入命令安装 第二种使用图形化安装 第一种可以在黑窗口输入命令安装 第二种使用图形化安装 1 Vscode [必须用vscode] 2 Webstorm [它和idea一模一样] 3 idea打开—安装vue插件 输入命令 启动成功 如果不能

    2024年02月15日
    浏览(13)
  • VUE——使用VUE脚手架创建项目

    前言 vue脚手架工具,对vue项目构造做了封装,直接使用vue-cli创建项目,常用配置自动帮你完成,不用自己像使用webpack一样配置。 目录 1、安装 npm i vue 2、创建vue项目 3、运行项目 ps:项目化开发中,使用import导入vue,而不用script src标签引入 我们的第一步需要下载vue及vue脚手

    2024年02月02日
    浏览(9)
  • 第 3 章:使用 Vue 脚手架

    第 3 章:使用 Vue 脚手架

    目录  具体步骤 模板项目的结构(脚手架文件结构) Vue脚手架报错 修改方案:  关于不同版本的Vue vue.config.js配置文件 ref属性 props配置项 mixin(混入) 插件 小结: scoped样式  小结: Todo-list 案例   小结 浏览器本地存储 webStorage 小结 Vue 中的自定义事件 绑定事件监听 触发事件

    2024年02月08日
    浏览(9)
  • 使用vue-cli脚手架创建vue项目

    0.vue cli安装 vue cli2安装 vue cli2卸载 vue cli3安装 key通过命令查看当前安装的vue cli的版本 1. vue init vue init 是vue-cli2.x的初始化方式,可以使用github上面的一些模板来初始化项目 webpack是官方推荐的标准模板名。 vue-cli2.x项目向3.x迁移只需要把static目录复制到public目录下,老项目的

    2024年02月11日
    浏览(12)
  • Vue--》超详细教程——vue-cli脚手架的搭建与使用

    Vue--》超详细教程——vue-cli脚手架的搭建与使用

    目录 vue-cli vue-cli 的安装 (可能出现的问题及其解决方法) vue-cli 创建 Vue 项目

    2024年01月17日
    浏览(40)
  • GuLi商城-前端基础Vue-使用Vue脚手架进行模块化开发

    GuLi商城-前端基础Vue-使用Vue脚手架进行模块化开发

    自己亲自实践: mac安装webpack 前提:已经安装node.js,可以参考 https://blog.csdn.net/ZHOU_VIP/article/details/128807814?spm=1001.2014.3001.5501 webpack 安装 首先确认一下是否已经安装: webpack -v 如果提示  command not found: webpack ,则表示未安装。 在Mac OS上安装webpack,需要先安装Node.js和npm。建议

    2024年02月11日
    浏览(10)
  • 使用vue脚手架搭建前端工程(附:搭配ElementUI来快速开发)

    使用vue脚手架搭建前端工程(附:搭配ElementUI来快速开发)

    目录 一、搭建过程 1. 全局安装webpack(打包工具) 2. 全局安装vue脚手架 3. 初始化vue项目 4. vue项目目录的简单介绍 二、执行流程分析 三、自己造一个组件案例 四、ElementUI的使用 1. 环境的引入 2. 一个简单使用 3. 使用它来快速搭建后台管理系统 五、总结 npm install webpack -g np

    2024年02月10日
    浏览(13)
  • Vue中使用uuid生成唯一ID(脚手架创建自带的)

    Vue中使用uuid生成唯一ID(脚手架创建自带的)

    说明:一般封装工具函数。 说明: 本人使用的是detail组件中的仓库。

    2024年02月13日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包