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 相关文章推荐
懒就要懒到底——鼠标自动点击(含时间判断)
Feb 20 Javascript
高性能web开发 如何加载JS,JS应该放在什么位置?
May 14 Javascript
javascript实现根据时间段显示问候语的方法
Jun 18 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
Sep 09 Javascript
通过设置CSS中的position属性来固定层的位置
Dec 14 Javascript
更靠谱的H5横竖屏检测方法(js代码)
Sep 13 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
Dec 26 Javascript
小程序封装路由文件和路由方法(5种全解析)
May 26 Javascript
Vue3 中的数据侦测的实现
Oct 09 Javascript
构建大型 Vue.js 项目的10条建议(小结)
Nov 14 Javascript
通过angular CDK实现页面元素拖放的步骤详解
Jul 01 Javascript
简单了解常用的JavaScript 库
Jul 16 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
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
php模板中出现空行解决方法
2011/03/08 PHP
PHP全局变量与超级全局变量区别分析
2016/04/01 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
PHP与服务器文件系统的简单交互
2016/10/21 PHP
驱动事件的addEvent.js代码
2007/03/27 Javascript
JavaScript创建对象的写法
2013/08/29 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
jQuery的Read()方法代替原生JS详解
2016/11/08 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
layui.js实现的表单验证功能示例
2017/11/15 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
2018/03/01 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
使用Typescript开发微信小程序的步骤详解
2021/01/12 Javascript
在Python中操作时间之strptime()方法的使用
2020/12/30 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
python一些性能分析的技巧
2020/08/30 Python
python 实现批量图片识别并翻译
2020/11/02 Python
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
canvas之自定义头像功能实现代码示例
2017/09/29 HTML / CSS
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
餐饮业的创业计划书范文
2013/12/26 职场文书
测控技术与仪器个人求职信范文
2013/12/30 职场文书
社会治安综合治理管理责任书
2014/04/16 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
云台山导游词
2015/02/03 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
python机器学习Github已达8.9Kstars模型解释器LIME
2021/11/23 Python
进行数据处理的6个 Python 代码块分享
2022/04/06 Python