Proxy
时间:2019-07-05
本文章向大家介绍Proxy,主要包括Proxy使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
vue-cli3.0项目,假如我们有以下文件逻辑:
.env.development
url = http:developDomain/app
vue.config.js
devServer: {
proxy: {
'/api': {
target: process.env.url, // 通过NODE_ENV配置不同的api地址
changeOrigin: true,
pathRewrite: {
'^/api': ''
}
},
}
api/base.js
let base
switch (process.env.NODE_ENV) {
case 'development':
base = '/api'
break
case 'production':
switch (process.env.VUE_APP_env) {
case 'test':
base = 'https://testDomain/app'
break
default:
base = 'https://productionDomain/app'
}
break
default:
}
export default {
base
}
api/index.js(设置axios,config配置default,拦截器)
axios.defaults.baseUrl = 'http:developDomain/app'
api/request.js
import { base } from @/api/base
login: (data) => axios.post(`${base}/login`, data)
则:
我们在development模式下,发出的login接口请求的逻辑会是这样:
1、首先axios.default.baseUrl的值,会被实际aixos调用时候的路径取代,变为/api/login
2、这时因为/api路径的原因,请求会先被proxy识别(vue.config.js proxy)进入里面逻辑,将路径改写为target值(这里我的是process.env.url,我在development模式下是.env.development文件里定义的url),我猜测这时会由vue-cli的内置服务(@vue/vue-cli-services的node服务)将请求转到target路径上。这样我们的请求就看起来是这样:localhost:8080/请求localhost:8080/api/login(最后我们看到的结果也确实是这样,chrome控制台的network显示请求信息:Request URL:http://localhost:8083/api/mg/login),由node服务将此请求转到target上进行请求
3、服务代理的原理和用处,大概就是,前端请求自己本地服务,然后由一个服务将请求转发,可以解决前端跨域(CORS跨域资源共享)的问题。如果开发时直接用axios调一个同事启动的服务的接口,就会存在跨域问题,即使后台设置了Access-Control-Allow-Origin允许跨域,如果交互上要传cookie请求头还是会被浏览器默认不携带cookie,而使用proxy之后,axios的请求才能由浏览器将本地cookie携带上传给一个不同域的后台
4、比如我设置的后台url--http://10.22.33.444:8080/app服务未开启,发出的请求status code为500 Internal Server Error, 查看preview将会提示Proxy error: Could not proxy request /mg/login from localhost:8083 to http://10.22.33.444:8080/app (ECONNREFUSED)
原文地址:https://www.cnblogs.com/aniviah/p/11136485.html
- Elasticsearch Javascript API增删改查
- Oracle二三事之 Oracle SPARC SuperCluster的九大技术优势
- 两个 viewports 的故事-第二部分
- 通过 JS 实现简单的拖拽功能并且可以在特定元素上禁止拖拽
- AngularJS 技术总结
- 《linux c编程指南》学习手记5
- AngularJS API之bootstrap启动
- 通过 JS 判断页面是否有滚动条的简单方法
- Log4j官方文档翻译(六、日志的级别)
- AngularJS API之isXXX()
- 《linux c编程指南》学习手记4
- Kibana中doc与search策略的区别
- jQuery 图片查看插件 Magnify 开发简介(仿 Windows 照片查看器)
- Log4j官方文档翻译(五、日志输出的方法)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 打卡群刷题总结0727——搜索旋转排序数组 II
- dotnet 的 TaskCompletionSource 的 TrySetResult 是线程安全
- OpenCV 摄像头与视频读取并显示
- OpenCV 边缘检测
- Spring Boot 集成 WebSocket 实现服务端推送消息到客户端
- OpenCV 绘制图形
- OpenCV 图片缩放
- AI树莓派——构建树莓派大脑(NCNN环境搭建)
- PC人脸识别登录,出乎意料的简单
- TensorLayer学习之简介与安装
- JVM系列之:String.intern的性能
- 神经网络架构搜索——可微分搜索(DARTS)
- 神经网络架构搜索——可微分搜索(P-DARTS)
- 神经网络架构搜索——可微分搜索(PC-DARTS)
- 反编译小程序记录