vue使用代理解决请求跨域问题详解


Posted in Javascript onJuly 24, 2019

在日常开发中,我们前端必不可少的需要像后端请求数据。

但是一般前后端分离,所以域名、端口等肯定不尽相同,这样就不可避免的会遇到浏览器的同源策略限制。

在一般情况下,后端都会设置请求跨域允许的来源、方法等。

但是也保不准后端疏忽而忘记这个问题。

那为了不影响我们的开发,前端只能被动的去找后端解决跨域问题。

其实,我们前端也可以解决跨域问题,那就是使用代理。

举个例子:

我请求的地址是这个:http://192.168.12.36:9000/api/SourceManager

但是我本地的vue项目的端口号是8080,这里就涉及到了端口号不一致导致的同源策略问题(别想着改成同端口,会冲突)、

那么我发起请求就会跨域而被浏览器拦截,那么我们来看看解决办法:

在vue的config文件夹中有个index.js文件:

在proxyTable中配置代理(名字可以随便起,我用的是web)

proxyTable: {
  '/web': {
    //设置你调用的接口域名和端口号 别忘了加http
    target: 'http://192.168.12.36:9000/api/SourceManage',
    changeOrigin: true,
    pathRewrite: {
      '^/web': ''
      //这里理解成用‘/web'代替target里面的地址,后面组件中我们掉接口时直接用web代替 比如我要调用'http://192.168.12.36:9000/api/SourceManage/user/add',直接写‘/web/user/add'即可
    }
  }
}

因为我是把公共的请求地址抽离出来的,所以大家可以参考以下部分:

获取数据:http://192.168.12.36:9000/api/SourceManager/GetAll

增加数据:http://192.168.12.36:9000/api/SourceManager/AddSource

修改数据:http://192.168.12.36:9000/api/SourceManager/UpdateSource

删除数据:http://192.168.12.36:9000/api/SourceManager/DeleteSource

理论上代理中配置到端口号即可,但是我为了后期方便,把公共地址抽离出来,一直配置到公共的结束,所以代理中我配置的是http://192.168.12.36:9000/api/SourceManager

然后在config文件夹中的dev.env.js文件中配置生产环境(开发环境):

这边写自己的路径端口号以及前面配置的代理名:

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  API_ROOT: ' "http://localhost:8080/web" '
})

然后在config文件夹中的prod.env.js文件中配置产品环境(上线环境):

这边我暂时就不写了,大家上线打包的时候写成自己的实际请求地址即可。

module.exports = {
  NODE_ENV: '"production"',
  API_ROOT: ' "" '
}

然后在main.js里改为请求配置的地址:

// 引入axios
import axios from 'axios'
 
// 使用axios
Vue.prototype.axios = axios;
 
// 配置公共请求地址
Vue.prototype.baseURL = process.env.API_ROOT;

然后在每个页面请求即可,写法参考:

因为之前一直配置的是公共地址,所以这里只写后面变化的,前面的引用设置的路径即可。

this.axios({
  method: "get",
  url:`${this.baseURL}/GetAll`, 
})
.then((response)=> {
  console.log(response)
})
.catch((error)=> {
  console.log(error);
});

设置完代理别忘了重启服务器。

好了,以上就是vue中配置代理解决跨域的问题。

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

Javascript 相关文章推荐
jscript之Open an Excel Spreadsheet
Jun 13 Javascript
图片自动缩小 点击放大
Jul 07 Javascript
jQuery的基本概念与高级编程
May 14 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
Jun 24 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
Oct 14 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
Jan 19 Javascript
react实现pure render时bind(this)隐患需注意!
Mar 09 Javascript
jQuery实现的简单获取索引功能示例
Jun 04 jQuery
vue-cli V3.0版本的使用详解
Oct 24 Javascript
vue微信分享的实现(在当前页面分享其他页面)
Apr 16 Javascript
小程序实现短信登录倒计时
Jul 12 Javascript
微信小程序 WeUI扩展组件库的入门教程
Apr 21 Javascript
Vue父组件如何获取子组件中的变量
Jul 24 #Javascript
mock.js模拟数据实现前后端分离
Jul 24 #Javascript
vue+mock.js实现前后端分离
Jul 24 #Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
Jul 24 #Javascript
Vue封装的组件全局注册并引用
Jul 24 #Javascript
vue子路由跳转实现tab选项卡
Jul 24 #Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
Jul 24 #Javascript
You might like
php轻松实现中英文混排字符串截取
2014/05/28 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
PHP实现简单ajax Loading加载功能示例
2016/12/28 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
jquery下利用jsonp跨域访问实现方法
2010/07/29 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
vue组件编写之todolist组件实例详解
2018/01/22 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
微信小程序地图绘制线段并且测量(实例代码)
2020/01/02 Javascript
python中__call__方法示例分析
2014/10/11 Python
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
2015/03/06 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
使用CodeMirror实现Python3在线编辑器的示例代码
2019/01/14 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
keras多显卡训练方式
2020/06/10 Python
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
2014年元旦促销活动方案
2014/02/22 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
毕业论文致谢格式模板
2015/05/14 职场文书
色戒观后感
2015/06/12 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书