Vue配置代理(devServer)解决跨域问题
1、作用:
Vue官方文档的解释是:
如果你的前端应用和后端 API 服务器没有运行在同一个主机上,你需要在开发环境下将 API 请求代理到 API 服务器。这个问题可以通过
vue.config.js中的devServer.proxy选项来配置。
通俗的说,就是为了解决跨域问题。
2、用法:
本篇都以axios发请求为例,样例如下:
|
1
2
3
|
axios.get("/abc/def");axios.get("/abc/ghi");axios.post("/abc/jkm"); |
axios发送的请求是本地的服务器地址拼接上发送的请求,如 http://xxx:8080/abc/def
2.1 指定请求开头配置
如果发送的请求都以 /abc 开头,代理配置:
|
1
2
3
4
5
6
7
8
9
10
|
devServer: { proxy: { "/abc": { target: "http://XX.XX.XX.XX:8081", changeOrigin: true, ws: true, secure: false, }, }}, |
- “/abc”:{} : 引号中代表,本代理配置,会检测以 /abc 开头的访问
- target : 代表检测到以 /abc 开头的接口后,将请求中端口、地址,修改为后端接口地址,从而避免发生跨域问题
- changeOrigin : 是否修改数据包中host参数,默认为true
- ws : 是否代理 websockets
- 该代理请求为:
http://localhost:8080/abc/def —> http://XX.XX.XX.XX:8081/abc/def
2.2 代理多个接口
请求示例:
|
1
2
3
4
|
// http://localhost:8080/zzz/oneaxios.get("/zzz/one");// http://localhost:8080/xxx/twoaxios.get("/xxx/two"); |
代理多接口方式1
监测多个接口,可以在proxy中写多个配置
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
devServer: { proxy: { "/zzz": { target: "http://XX.XX.XX.XX:8082", changeOrigin: true, ws: true, }, "/xxx": { target: "http://XX.XX.XX.XX:8083", changeOrigin: true, ws: true, }, },}, |
代理多接口方式2
配置axios
|
1
2
3
4
5
6
7
|
// 只要发送axios请求,就在请求前加入/api的开头,例如 /zzz/one -> /api/zzz/oneaxios.defaults.baseURL = "/api"; /*进行了上方的配置后,在本地发送的请求会变为http://localhost:8080/api/zzz/onehttp://localhost:8080/api/xxx/two*/ |
配置代理
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
devServer: { proxy: { "/api": { target: "http://XX.XX.XX.XX:8084", changeOrigin: true, ws: true, pathRewrite: { "^/api": "", }, }, },},//pathRewrite :检查代理的请求中是否有 /api ,有的话把 /api 替换为冒号后面的内容,案例为替换成空字符串,也就是删去 /api 。(^是正则表达式的内容,意思是限定开头) |
3、常见参数
|
1
2
3
4
5
6
7
8
9
10
11
12
|
target:"xxx", // 要使用url模块解析的url字符串forward:"xxx", // 要使用url模块解析的url字符串agent:{}, // 要传递给http(s).request的对象ssl:{}, // 要传递给https.createServer()的对象ws:true/false, // 是否代理websocketsxfwd:true/false, // 添加x-forward标头secure:true/false, // 是否验证SSL CertstoProxy:true/false, // 传递绝对URL作为路径(对代理代理很有用)prependPath:true/false, // 默认值:true 指定是否要将目标的路径添加到代理路径ignorePath:true/false, // 默认值:false 指定是否要忽略传入请求的代理路径localAddress:"xxx", // 要为传出连接绑定的本地接口字符串changeOrigin:true/false, // 默认值:false 将主机标头的原点更改为目标URL |
Vue配置代理(devServer)解决跨域问题的更多相关文章
- vue反向代理(解决跨域)
1,vue中有提供反向代理的接口,就是config/index.js中的proxyTable,我的脚手架版本是2.9.6,proxyTable配置初始为空,如下图. 2,将proxyTable配置如下 ...
- vue配置请求转发解决跨域问题
通过nodejs的请求转发到后台,前端地址:http://localhost:8080 后端地址:http://localhost:8081 vue.config.js内容如下: let prox ...
- vue访问外部接口设置代理,解决跨域(vue-cli3.0)
vue-cli3.0搭建的项目,平时访问内部接口配置了拦截器,今天需要调用天气预报的外部接口,发现跨域问题,通过配置代理解决. 1.在vue.config.js中配置代理 module.exports ...
- Webpack 开发服务器代理设置解决跨域问题
在前端开发过程中,可能会遇到跨域问题,在 webpack 设置中对 devServer 配置代理即可解决跨域问题,具体设置如下: webpack.config.js module.exports = ...
- 【手摸手,带你搭建前后端分离商城系统】02 VUE-CLI 脚手架生成基本项目,axios配置请求、解决跨域问题
[手摸手,带你搭建前后端分离商城系统]02 VUE-CLI 脚手架生成基本项目,axios配置请求.解决跨域问题. 回顾一下上一节我们学习到的内容.已经将一个 usm_admin 后台用户 表的基本增 ...
- Nginx+Springboot+Vue 前后端分离 解决跨域问题
1:前端vue 写完 打包 npm run build prod 2: 后端api 写完打包 springboot mvn package -Dmaven.test.skip=true 3: ngin ...
- nuxt.js axios使用poxyTable代理,解决跨域问题
1 安装(@gauseen/nuxt-proxy) cnpm install @gauseen/nuxt-proxy --save 2 配置nuxt.config.js modules: [ // 请 ...
- iframe 父子页面调用vue函数,并解决跨域问题,宽度自适应
第一: 1. 父页面 html <iframe id="external-frame" name="external-frame" ref="i ...
- vue cli3.3 以上版本配置vue.config.js 及反向代理操作解决跨域操作
const webpack = require('webpack') module.exports = { configureWebpack: { plugins: [ new webpack.Pro ...
- vue配置二级目录&vue-axios跨域办法&谷歌浏览器设置跨域
一.根据官方建议,dist打包的项目文件放在服务器根目录下,但是很多时候,我们并不能这样做,当涉及到二级目录设置多层深埋的时候,就需要在webpack配置文件里去设置一下了. 在webpack.con ...
随机推荐
- 重磅来袭!MoneyPrinterPlus一键发布短视频到视频号,抖音,快手,小红书上线了
MoneyPrinterPlus开源有一段时间了,已经实现了批量短视频混剪,一键生成短视频等功能. 有些小伙伴说了,我批量生成的短视频能不能一键上传到视频号,抖音,快手,小红书这些视频平台呢?答案是必 ...
- 玄机-第一章 应急响应-Linux日志分析
目录 前言 简介 应急开始 准备工作 查看auth.log文件 grep -a 步骤 1 步骤 2 步骤 3 步骤 4 步骤 5 总结 前言 又花了一块rmb玩玄机...啥时候才能5金币拿下一个应急靶 ...
- oeasy教您玩转linux010204-figlet
我们来回顾一下 上一部分我们都讲了什么? 用 apt 查询并下载了 linuxlogo 用字符画出了 linux 发行版的 logo 还查了手册,通过改参数控制输出信息 我们还能玩点什么呢? 这个实验 ...
- [oeasy]python0016_编码_encode_编号_字节_计算机
编码(encode) 回忆上次内容 上次找到了字符和字节状态之间的映射对应关系 字符对应着二进制字节 二进制字节也对应着字符 这种字节状态是用2位16进制数来表示的 hex(n)可以把数字转化为 ...
- ADB:移动端专项测试必备神器!!
01 Android调试桥 (adb) Android调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信. adb命令可用于执行各种设备操作(例如安装和调试应用),并提供对Unix ...
- Python 在PDF中添加、替换、或删除图片
PDF文件中的图片可以丰富文档内容,提升用户的阅读体验.除了在PDF中添加图片外,有时也需要替换或删除其中的图片,以改进视觉效果或更新信息.本文将提供以下三个示例,介绍如何使用Python 操作PDF ...
- 8、IDEA集成Git
8.1.配置Git忽略文件 8.1.1.忽略文件的原因 在使用 IDE 工具时,会自动生成一些和项目源码无关的文件,所以可以让 Git 忽略这些文件. 此外,把这些无关文件忽略掉,还能够屏蔽不同 ID ...
- 【Spring】01 快速入门
Spring快速入门 空Maven项目创建 声明工程名称,完成 删除SRC目录,创建01 HelloSpring模块 导入依赖 Maven坐标: <!-- https://mvnreposito ...
- 图解Java设计模式
待补充 设计模式介绍 设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案. 设计模式使用的位置 功能模块+框架上. 设计模式在软件中哪里?面向对象( ...
- golang 指定权限是 0o755 而不是 0755
在Go语言中,当指定文件权限时,使用前缀 0o 来明确表示八进制数是一种推荐的做法. 这是因为在Go语言中,八进制字面量必须以 0o 或 0O 开头,后跟八进制数字(0-7). 这种语法是从 Go 1 ...