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 相关文章推荐
论坛特效代码收集(落伍转发-不错)
Dec 02 Javascript
List Installed Hot Fixes
Jun 12 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
Apr 15 Javascript
有关DOM元素与事件的3个谜题
Nov 11 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
Dec 20 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
Apr 14 Javascript
自己写了一个展开和收起的多更能型的js效果
Mar 05 Javascript
jQuery中 prop() attr()使用详解
May 19 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
Oct 26 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
Dec 02 Javascript
Bootstrap免费字体和图标网站(值得收藏)
Mar 16 Javascript
jQuery实现动态添加和删除input框代码实例
Mar 29 jQuery
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
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
判断浏览器的javascript版本的代码
2010/09/03 Javascript
js实现幻灯片效果(基于jquery插件)
2013/11/05 Javascript
Jquery中map函数的用法
2016/06/03 Javascript
vue2组件实现懒加载浅析
2017/03/29 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
在vue里面设置全局变量或数据的方法
2018/03/09 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
2018/09/05 Javascript
Vue 表情包输入组件的实现代码
2019/01/21 Javascript
JS数组扁平化、去重、排序操作实例详解
2020/02/24 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
Python对象体系深入分析
2014/10/28 Python
Python守护进程用法实例分析
2015/06/04 Python
Python使用redis pool的一种单例实现方式
2016/04/16 Python
利用Python命令行传递实例化对象的方法
2016/11/02 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
Python list运算操作代码实例解析
2020/01/20 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
大数据分析用java还是Python
2020/07/06 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
巴西女装购物网站:Eclectic
2018/04/24 全球购物
英国No.1体育用品零售商:SportsDirect.com
2019/10/16 全球购物
中科方德软件测试面试题
2016/04/21 面试题
仓库管理专业个人的自我评价
2013/12/30 职场文书
C++程序员求职信范文
2014/04/14 职场文书
公司员工辞职信范文
2015/05/12 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
MySQL里面的子查询的基本使用
2021/08/02 MySQL
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript