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 相关文章推荐
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
Mar 12 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
Aug 12 Javascript
javascript合并表格单元格实例代码
Jan 03 Javascript
js实现九宫格拼图小游戏
Feb 13 Javascript
JavaScript解析任意形式的json树型结构展示
Jul 23 Javascript
浅谈Javascript常用正则表达式应用
Mar 08 Javascript
JS设置自定义快捷键并实现图片上下左右移动
Oct 17 Javascript
微信小程序select下拉框实现源码
Nov 08 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 Javascript
jQuery实现的移动端图片缩放功能组件示例
May 01 jQuery
node.js如何操作MySQL数据库
Oct 29 Javascript
js实现滚动条自动滚动
Dec 13 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生成随机密码的几种方法
2011/01/17 PHP
php curl_init函数用法
2014/01/31 PHP
33道php常见面试题及答案
2015/07/06 PHP
thinkPHP5.0框架环境变量配置方法
2017/03/17 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
jQuery 学习 几种常用方法
2009/06/11 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
2011/04/07 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
2016/06/12 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
javascript动态创建对象的属性详解
2018/11/07 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
[01:01]青春无憾,一战成名——DOTA2全国高校联赛开启
2018/02/25 DOTA
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
Python多进程同步Lock、Semaphore、Event实例
2014/11/21 Python
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
django 控制页面跳转的例子
2019/08/06 Python
Python PyPDF2模块安装使用解析
2020/01/19 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
C面试题
2015/10/08 面试题
音乐专业应届生教师求职信
2013/11/04 职场文书
营销与策划应届生求职信
2013/11/04 职场文书
车间主管岗位职责
2013/11/14 职场文书
转预备党员政审材料
2014/02/06 职场文书
党员民主评议自我评价
2014/10/20 职场文书
小学毕业感言200字
2015/07/30 职场文书
关于军训的感想
2015/08/07 职场文书
《中国机长》观后感:敬畏生命,敬畏职责
2019/11/12 职场文书
导游词之南昌滕王阁
2019/11/29 职场文书
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫