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 相关文章推荐
jQuery EasyUI 的EasyLoader功能介绍
Sep 12 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
Oct 20 Javascript
jQuery中操控hidden、disable等无值属性的方法
Jan 06 Javascript
利用JavaScript检测CPU使用率自己写的
Mar 22 Javascript
javascript实现简单的html5视频播放器
May 06 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
Jun 03 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
Jan 18 Javascript
浅谈Vuejs Prop基本用法
Aug 17 Javascript
Node之简单的前后端交互(实例讲解)
Nov 14 Javascript
vue设置导航栏、侧边栏为公共页面的例子
Nov 01 Javascript
详解Angular cli配置过程记录
Nov 07 Javascript
JavaScript计算正方形面积
Nov 26 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
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
php支持断点续传、分块下载的类
2016/05/02 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
js电信网通双线自动选择技巧
2008/11/18 Javascript
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
JavaScript中出现乱码的处理心得
2009/12/24 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
jquery事件preventDefault()方法用法实例
2015/01/16 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
jQuery实现简单隔行变色的方法
2016/02/20 Javascript
AngularJs bootstrap搭载前台框架——基础页面
2016/09/01 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
vue实现element-ui对话框可拖拽功能
2018/08/17 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
python 判断自定义对象类型
2009/03/21 Python
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
pygame播放音乐的方法
2015/05/19 Python
python抓取网页中图片并保存到本地
2015/12/01 Python
Django自定义过滤器定义与用法示例
2018/03/22 Python
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
2019/01/07 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
美国鲜花递送:UrbanStems
2021/01/04 全球购物
汽车维修工岗位职责
2014/02/12 职场文书
幼儿园儿童节主持词
2014/03/21 职场文书
文明村镇申报材料
2014/05/06 职场文书
研究生求职自荐书
2014/06/23 职场文书
2014统计局民主生活会对照检查材料思想汇报
2014/10/02 职场文书
盲山观后感
2015/06/11 职场文书
小学安全教育主题班会
2015/08/12 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL