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 相关文章推荐
Jqgrid设置全选(选择)及获取选择行的值示例代码
Dec 28 Javascript
node.js中的fs.close方法使用说明
Dec 17 Javascript
jQuery+jRange实现滑动选取数值范围特效
Mar 14 Javascript
jQuery入门之层次选择器实例简析
Dec 11 Javascript
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
May 19 Javascript
AngularJS入门教程之REST和定制服务详解
Aug 19 Javascript
Bootstarp基本模版学习教程
Feb 01 Javascript
canvas实现动态小球重叠效果
Feb 06 Javascript
Vue 页面跳转不用router-link的实现代码
Apr 12 Javascript
基于webpack4+vue-cli3项目实现换肤功能
Jul 17 Javascript
在vue中利用v-html按分号将文本换行的例子
Nov 14 Javascript
javascript中Set、Map、WeakSet、WeakMap区别
Dec 24 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
玩转虚拟域名◎+ .
2006/10/09 PHP
用PHP制作的意见反馈表源码
2007/03/11 PHP
在PHP中使用curl_init函数的说明
2010/11/02 PHP
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
php中heredoc与nowdoc介绍
2014/12/25 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
表单提交验证类
2006/07/14 Javascript
JavaScript 特殊字符
2007/04/05 Javascript
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
2010/09/03 Javascript
js 实现 input type="file" 文件上传示例代码
2013/08/07 Javascript
jquery操作HTML5 的data-*的用法实例分享
2014/08/17 Javascript
JQuery报错Uncaught TypeError: Illegal invocation的处理方法
2015/03/13 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
vue获取时间戳转换为日期格式代码实例
2019/04/17 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
使用Python编写简单网络爬虫抓取视频下载资源
2014/11/04 Python
Python中实现switch功能实例解析
2018/01/11 Python
python将视频转换为全字符视频
2019/04/26 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
CSS实现半透明边框与多重边框的场景分析
2019/11/13 HTML / CSS
安全资金保障制度
2014/01/23 职场文书
学生会主席竞聘书
2014/03/31 职场文书
党委书记个人检查对照材料思想汇报
2014/10/11 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
母亲去世追悼词
2015/06/23 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
教你win10系统中APPCRASH事件问题解决方法
2022/07/15 数码科技