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 相关文章推荐
Javascript 汉字字节判断
Aug 01 Javascript
ExtJs的Date格式字符代码
Dec 30 Javascript
jquery索引在使用中的一些困惑
Oct 24 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
Jan 26 Javascript
javascript监听鼠标滚轮事件浅析
Jun 05 Javascript
Node.js中require的工作原理浅析
Jun 24 Javascript
关于javascript作用域的常见面试题分享
Jun 18 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
Apr 04 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
Aug 31 Javascript
Vue项目引发的「过滤器」使用教程
Mar 12 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
Jul 21 Javascript
vue如何清除浏览器历史栈
May 25 Vue.js
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
真正的ZIP文件操作类(php)
2007/07/21 PHP
PHP写MySQL数据 实现代码
2009/06/15 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
2013/12/18 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
javascript学习笔记(六)数据类型和JSON格式
2014/10/08 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
Python set集合类型操作总结
2014/11/07 Python
python实现从字典中删除元素的方法
2015/05/04 Python
Python+MongoDB自增键值的简单实现
2016/11/04 Python
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
人机交互程序 python实现人机对话
2017/11/14 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
python logging.info在终端没输出的解决
2020/05/12 Python
Araks官网:纽约内衣品牌
2020/10/15 全球购物
房地产销售员的自我评价分享
2013/12/04 职场文书
学习新党章思想汇报
2014/01/09 职场文书
超越自我演讲稿
2014/05/21 职场文书
个人授权委托书样本
2014/09/13 职场文书
运动会稿件100字
2014/09/24 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年工程部工作总结
2014/11/25 职场文书
学雷锋倡议书
2015/01/19 职场文书
大队委员竞选演讲稿
2015/11/20 职场文书
解析laravel使用workerman用户交互、服务器交互
2021/04/28 PHP
python批量创建变量并赋值操作
2021/06/03 Python
Oracle配置dblink访问PostgreSQL的操作方法
2022/03/21 PostgreSQL
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android
Linux磁盘管理方法介绍
2022/06/01 Servers