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 相关文章推荐
获取css样式表内样式的js函数currentStyle(IE),defaultView(FF)
Feb 14 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
Oct 20 Javascript
JS对象转换为Jquery对象示例
Jan 26 Javascript
javascript制作游戏开发碰撞检测的封装代码
Mar 31 Javascript
fastclick插件导致日期(input[type="date"])控件无法被触发该如何解决
Nov 09 Javascript
jQuery基于json与cookie实现购物车的方法
Apr 15 Javascript
bootstrap flask登录页面编写实例
Nov 01 Javascript
原生javascript实现图片放大镜效果
Jan 18 Javascript
JS中解决谷歌浏览器记住密码输入框颜色改变功能
Feb 13 Javascript
JS简单实现数组去重的方法分析
Oct 14 Javascript
react redux入门示例
Apr 19 Javascript
vue+ts下对axios的封装实现
Feb 18 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 EOT定界符的使用详解
2008/09/30 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
php生成微信红包数组的方法
2019/09/05 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
javascript不同页面传值的改进版
2008/09/30 Javascript
window.dialogArguments 使用说明
2011/04/11 Javascript
js控制CSS样式属性语法对照表
2012/12/11 Javascript
JS实现网页滚动条感应鼠标变色的方法
2015/02/26 Javascript
jQuery+HTML5美女瀑布流布局实现方法
2015/09/21 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
JS实现可针对算术表达式求值的计算器功能示例
2018/09/04 Javascript
详解Vue中的scoped及穿透方法
2019/04/18 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
Python随机生成手机号、数字的方法详解
2017/07/21 Python
Numpy之文件存取的示例代码
2018/08/03 Python
Python魔法方法详解
2019/02/13 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
金山毒霸系列的笔试题
2013/04/13 面试题
Linux的文件类型
2016/07/05 面试题
计算机专业大学生的自我评价
2013/11/14 职场文书
女生节标语
2014/06/26 职场文书
师范毕业生求职信
2014/07/11 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
未受刑事制裁公证证明
2014/09/20 职场文书
大学生读书笔记大全
2015/07/01 职场文书