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 相关文章推荐
js玩一玩WSH吧
Feb 23 Javascript
js 数组操作代码集锦
Apr 28 Javascript
javascript 用函数语句和表达式定义函数的区别详解
Jan 06 Javascript
JS中表单的使用小结
Jan 11 Javascript
jQuery中的height innerHeight outerHeight区别示例介绍
Jun 15 Javascript
jQuery取得设置清空select选择的文本与值
Jul 08 Javascript
js实现拖拽效果
Feb 12 Javascript
js实现多图左右切换功能
Aug 04 Javascript
js中判断变量类型函数typeof的用法总结
Aug 09 Javascript
Vue.js常用指令汇总(v-if、v-for等)
Nov 03 Javascript
微信小程序 ES6Promise.all批量上传文件实现代码
Apr 14 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
Sep 25 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
自己动手,丰衣足食 - 短波框形天线制作
2021/03/01 无线电
简单的php中文转拼音的实现代码
2014/02/11 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
javascript学习笔记(二)数组和对象部分
2014/09/30 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
Javascript类型判断相关例题及解析
2020/08/26 Javascript
[00:50]2014DOTA2国际邀请赛 NEWBEE战队回顾
2014/08/01 DOTA
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
HTML5调用手机摄像头拍照的实现思路及代码
2014/06/15 HTML / CSS
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
介绍一下JNDI的基本概念
2013/07/26 面试题
高中毕业自我鉴定范文
2013/10/02 职场文书
你懂得怎么写自荐信吗?
2013/12/27 职场文书
班组长岗位职责范本
2014/01/05 职场文书
入股协议书
2014/04/14 职场文书
我的中国梦演讲稿1000字
2014/08/19 职场文书
公证委托书标准格式
2014/09/11 职场文书
企业三严三实学习心得体会
2014/10/13 职场文书
全陪导游词开场白
2015/05/29 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js