vue-cli中vue本地实现跨域调试接口

所属分类: 网络编程 / JavaScript 阅读数: 1972
收藏 0 赞 0 分享

使用vue的同学们大都是基于vue-cli来搭建项目的,vue-cli中的配置全面强大。

// 常用的命令
npm run dev // 本地热更新模式
npm run build //生产模式 会在根目录下打包出一个dist文件夹,直接放在服务器上就可以使用了

开发阶段与后台同学进行数据交互(调试接口) 本机与服务器之间会出现跨域问题

跨域报错

解决办法

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 => {
 // 请求成功。。。
})

所有配置已完成

需要注意的是

本地环境下查看浏览器的Network

本地环境下,请求的ip地址变成了本机的ip,后面还会跟上一个 /api ,说明代理是成功的。

例如浏览器上请求地址(这是代理地址)

192.168.0.0:8080/api/xxx

但其实真正请求的地址是

根目录/config/index.js配置的地址 + /xxx

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

AngularJs IE Compatibility 兼容老版本IE

本文主要介绍AngularJs IE Compatibility 兼容老版本IE的问题及解决办法,有兴趣的小伙伴可以参考下
收藏 0 赞 0 分享

AngularJs Modules详解及示例代码

本文主要介绍AngularJs Modules的相关知识,这里整理了详细的资料及简单示例代码,有兴趣的朋友可以参考下
收藏 0 赞 0 分享

AngularJs Scope详解及示例代码

本文主要介绍AngularJs Scope的知识,这里整理了详细资料及示例代码,有兴趣的小伙伴可以参考下
收藏 0 赞 0 分享

node.js中module.exports与exports用法上的区别

Node.js 引入了模块(Module)概念,一个模块可以通过module.exports 或 exports 将函数、变量等导出,以使其它 JavaScript 脚本通过require() 函数引入并使用。那么node.js中module.exports与exports有什么
收藏 0 赞 0 分享

基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)

这篇文章主要介绍了基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)

最近做了一个项目,其中有需求要求实现发送短信验证码后倒计时功能,其中有个难点:要求关闭页面也进行倒计时。好吧,下面小编把jquery 发送验证码倒计时的实现代码分享给大家,大家可以参考下
收藏 0 赞 0 分享

js绘制购物车抛物线动画

这篇文章主要为大家详细介绍了js绘制购物车抛物线动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

vue.js入门教程之绑定class和style样式

小编之前介绍了通过vue.js计算属性,不知道大家都学会了吗。那这篇文章中我们将一起学习vue.js实现绑定class和style样式,有需要的朋友们可以参考借鉴。
收藏 0 赞 0 分享

纯JS实现可拖拽表单的简单实例

下面小编就为大家带来一篇纯JS实现可拖拽表单的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

js实现StringBuffer的简单实例

下面小编就为大家带来一篇js实现StringBuffer的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多