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 相关文章推荐
js Date概念详细介绍
Nov 22 Javascript
Extjs表单常见验证小结
Mar 07 Javascript
ExtJS4给Combobox设置列表中的默认值示例
May 02 Javascript
jquery中使用循环下拉菜单示例代码
Sep 24 Javascript
一个js过滤空格的小函数
Oct 10 Javascript
jQuery封装的屏幕居中提示信息代码
Jun 08 Javascript
javascript ES6 新增了let命令使用介绍
Jul 07 Javascript
AngularJS 应用模块化的使用
Apr 04 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
Sep 04 jQuery
js中let能否完全替代IIFE
Jun 15 Javascript
vue实现短信验证码登录功能(流程详解)
Dec 10 Javascript
vue 查看dist文件里的结构(多种方式)
Jan 17 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/11 PHP
php 多个submit提交表单 处理方法
2009/07/07 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
2013/08/07 PHP
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
JavaScript打印网页指定区域的例子
2014/05/03 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
详解KOA2如何手写中间件(装饰器模式)
2018/10/11 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
2020/05/11 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
python实现图片批量剪切示例
2014/03/25 Python
django模型中的字段和model名显示为中文小技巧分享
2014/11/18 Python
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
Python实现统计给定列表中指定数字出现次数的方法
2018/04/11 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
Python延时操作实现方法示例
2018/08/14 Python
python单例模式实例解析
2018/08/28 Python
使用python PIL库实现简单验证码的去噪方法步骤
2019/05/10 Python
解决TensorFlow调用Keras库函数存在的问题
2020/07/06 Python
东方红海科技面试题软件测试方面
2012/02/08 面试题
《太阳》教学反思
2014/02/21 职场文书
专项法律服务方案
2014/06/11 职场文书
研究生求职自荐书
2014/06/23 职场文书
户籍证明书标准模板
2014/09/10 职场文书
保安2014年终工作总结
2014/12/06 职场文书
武侯祠导游词
2015/02/04 职场文书
李强感恩观后感
2015/06/17 职场文书
董事会决议范本
2015/07/01 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python