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 相关文章推荐
3Z版基于jquery的图片复选框(asp.net+jquery)
Apr 12 Javascript
js批量设置样式的三种方法不推荐使用with
Feb 25 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
Apr 10 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
May 06 Javascript
异步动态加载JS并运行(示例代码)
Dec 13 Javascript
创建js对象和js类的方法汇总
Dec 24 Javascript
jQuery滚动条插件nanoscroller使用指南
Apr 21 Javascript
AngularJS实现标签页的两种方式
Sep 05 Javascript
javascript垃圾收集机制的原理分析
Dec 08 Javascript
js获取指定时间的前几秒
Apr 05 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
Apr 26 Javascript
微信小程序服务器日期格式化问题
Jan 07 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
PHP开发文件系统实例讲解
2006/10/09 PHP
Zend Framework入门教程之Zend_Config组件用法详解
2016/12/09 PHP
JavaScript 事件对象介绍
2015/04/13 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
Bootstrap学习笔记之css组件(3)
2016/06/07 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
JS获取随机数和时间转换的简单实例
2016/07/10 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
微信小程序实现topBar底部选择栏效果
2018/07/20 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
vue 实现单选框设置默认选中值
2019/11/07 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
[51:10]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
Django框架中的对象列表视图使用示例
2015/07/21 Python
Python ldap实现登录实例代码
2016/09/30 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
Python实现GIF图倒放
2020/07/16 Python
详解Python 最短匹配模式
2020/07/29 Python
python编写实现抽奖器
2020/09/10 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
销售员自我评价怎么写
2013/09/19 职场文书
学习标兵获奖感言
2014/02/20 职场文书
建筑安全责任书范本
2014/07/24 职场文书
岗位职责说明书模板
2014/07/30 职场文书
党员个人对照检查材料范文
2014/09/24 职场文书
2014年收银工作总结
2014/11/13 职场文书
2015年图书馆个人工作总结
2015/05/26 职场文书
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android