vue-cli中vue本地实现跨域调试接口


Posted in Javascript onJanuary 16, 2019

使用vue的同学们大都是基于vue-cli来搭建项目的,vue-cli中的配置全面强大。

// 常用的命令
npm run dev // 本地热更新模式
npm run build //生产模式 会在根目录下打包出一个dist文件夹,直接放在服务器上就可以使用了

开发阶段与后台同学进行数据交互(调试接口) 本机与服务器之间会出现跨域问题

vue-cli中vue本地实现跨域调试接口

跨域报错

解决办法

npm run dev执行后,项目会在本地node中执行。vue-cli中提供了非常方便的代理方式。

直接上代码 根目录/config/index.js 中,搜索 proxyTable ,把它改成如下对象

proxyTable: {
   '/api': { //使用"/api"来代替"http://baidu.com"
    target: 'http://baidu.com', //源地址
    changeOrigin: true, //改变源
    pathRewrite: {
     '^/api': '/' //路径重写
    }
   }
 }

这段代码的意思是用 /api 带代替请求地址的域名

为了方便使用,需要不同环境下的不同配置

根目录/config/dev.env.js 这里面是本地dev环境的配置

module.exports = merge(prodEnv, {
 // 你的其他的一些配置。。。
 // 。。。
 // 本地调试环境下的请求地址/api
 // 对应代理的/api配置
 API_ROOT: '"/api"',
})

根目录/config/prod.env.js 这里面是生产build环境的配置

module.exports = {
 // 你的其他的一些配置。。。
 // 。。。
 API_ROOT:'"实际生产环境的请求地址"',
}

修改类似执行配置都需要

重新 npm run dev
重新 npm run dev
重新 npm run dev

配置完工后,我们找到 src/main.js

这里用axios为例

import Vue from 'vue'
import axios from 'axios'

// process.env.API_ROOT就得到了上面不同环境下的API_ROOT
const baseUrl = process.env.API_ROOT
// 把baseUrl挂载到Vue原型上,方便组件内部使用
Vue.prototype.baseUrl = baseUrl;
// axios也挂载到原型上 this.$http就指向axios
Vue.prototype.$http = axios;

OK,一切配置就绪,我们在任一地方就可以使用了

// 组件内使用axios
// 不同的配置下,this.baseUrl的值就不同
this.$http.post(`${this.baseUrl}/aaa/xxx`, {
 id: 123
}).then(res => {
 // 请求成功。。。
})

所有配置已完成

需要注意的是

vue-cli中vue本地实现跨域调试接口

本地环境下查看浏览器的Network

本地环境下,请求的ip地址变成了本机的ip,后面还会跟上一个 /api ,说明代理是成功的。

例如浏览器上请求地址(这是代理地址)

192.168.0.0:8080/api/xxx

但其实真正请求的地址是

根目录/config/index.js配置的地址 + /xxx

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
再次更新!MSClass (Class Of Marquee Scroll通用不间断滚动JS封装类 Ver 1.6)
Feb 05 Javascript
jquery实现盒子下拉效果示例代码
Sep 12 Javascript
jquery的live使用注意事项
Feb 18 Javascript
javascript父、子页面交互技巧总结
Aug 08 Javascript
jQuery异步加载数据并添加事件示例
Aug 24 Javascript
javascript实现一个数值加法函数
Jun 26 Javascript
关于Webpack dev server热加载失败的解决方法
Feb 22 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
Mar 08 Javascript
vue的.vue文件是怎么run起来的(vue-loader)
Dec 10 Javascript
微信小程序页面间跳转传参方式总结
Jun 13 Javascript
js实现开关灯效果
Mar 30 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
Nov 15 Javascript
vue element动态渲染、移除表单并添加验证的实现
Jan 16 #Javascript
深入koa-bodyparser原理解析
Jan 16 #Javascript
jQuery实现的点击图片居中放大缩小功能示例
Jan 16 #jQuery
详解微信小程序之scroll-view的flex布局问题
Jan 16 #Javascript
vue开发环境配置跨域的方法步骤
Jan 16 #Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
Jan 16 #Javascript
在Create React App中启用Sass和Less的方法示例
Jan 16 #Javascript
You might like
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
javascript各种复制代码收集
2008/09/20 Javascript
JavaScript 设计模式学习 Singleton
2009/07/27 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
json实现前后台的相互传值详解
2015/01/05 Javascript
javascript实现删除前弹出确认框
2015/06/04 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
详解Vue自定义过滤器的实现
2017/01/10 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
2019/08/21 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
vue element ui validate 主动触发错误提示操作
2020/09/21 Javascript
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
Python转码问题的解决方法
2008/10/07 Python
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
Python通过属性手段实现只允许调用一次的示例讲解
2018/04/21 Python
python匿名函数用法实例分析
2019/08/03 Python
Python shelve模块实现解析
2019/08/28 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
2021/01/22 Python
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
全球领先的中国制造商品在线批发平台:DHgate
2020/01/28 全球购物
宣传保护环境的公益广告词
2014/03/13 职场文书
工作会议主持词
2014/03/17 职场文书
安全协议书
2014/04/23 职场文书
公司股东出资证明书
2014/11/01 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
电影圆明园观后感
2015/06/03 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
小学四年级班务总结该怎么写?
2019/08/16 职场文书
SQL 聚合、分组和排序
2021/11/11 MySQL
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis