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 操作符实例代码
Oct 24 Javascript
jQuery:节点(插入,复制,替换,删除)操作
Mar 04 Javascript
关于jquery中全局函数each使用介绍
Dec 10 Javascript
JavaScript数组的定义及数字操作技巧
Jun 06 Javascript
深入理解jQuery 事件处理
Jun 14 Javascript
微信小程序 教程之数据绑定
Oct 18 Javascript
underscore之function_动力节点Java学院整理
Jul 11 Javascript
vue生成随机验证码的示例代码
Sep 29 Javascript
详解微信小程序之scroll-view的flex布局问题
Jan 16 Javascript
JavaScript中Dom操作实例详解
Jul 08 Javascript
浅谈微信小程序列表埋点曝光指南
Oct 15 Javascript
基于JavaScript实现猜数字游戏代码实例
Jul 30 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
什么是MVC,好东西啊
2007/05/03 PHP
微信公众平台开发-微信服务器IP接口实例(含源码)
2017/03/05 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
js 判断js函数、变量是否存在的简单示例代码
2014/03/04 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
JavaScript鼠标特效大全
2016/09/13 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
python三元运算符实现方法
2013/12/17 Python
Python continue语句用法实例
2014/03/11 Python
python实现折半查找和归并排序算法
2017/04/14 Python
python查询mysql,返回json的实例
2018/03/26 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
浅谈HTML5 & CSS3的新交互特性
2016/07/19 HTML / CSS
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
实用的简历自我评价
2014/03/06 职场文书
少儿节目主持串词
2014/04/02 职场文书
我爱读书演讲稿
2014/05/07 职场文书
物业管理工作方案
2014/05/10 职场文书
天下第一关导游词
2015/02/06 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
分享15个Webpack实用的插件!!!
2021/03/31 Javascript
Vue详细的入门笔记
2021/05/10 Vue.js
Java实现注册登录跳转
2022/06/16 Java/Android