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 相关文章推荐
JavaScript 学习小结(适合新手参考)
Jul 30 Javascript
js实现鼠标滚轮控制图片缩放效果的方法
Feb 20 Javascript
比例尺、缩略图、平移缩放之百度地图添加控件方法
Aug 03 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
Feb 16 Javascript
Bootstrap菜单按钮及导航实例解析
Sep 09 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
Sep 16 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
Nov 16 Javascript
jquery网页日历显示控件calendar3.1使用详解
Nov 24 Javascript
详解Vue.js分发之作用域槽
Jun 13 Javascript
详解vue-cli项目中怎么使用mock数据
May 29 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
Aug 25 Javascript
JavaScript实现烟花绽放动画效果
Aug 04 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
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
使用jquery的ajax需要注意的地方dataType的设置
2013/08/12 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
2016/01/27 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
JavaScript的兼容性与调试技巧
2016/11/22 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
canvas仿iwatch时钟效果
2017/03/06 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
js中编码函数:escape,encodeURI与encodeURIComponent详解
2017/03/21 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
Vue中render方法的使用详解
2018/01/26 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
JS获取子节点、父节点和兄弟节点的方法实例总结
2018/07/06 Javascript
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
Python内置函数dir详解
2015/04/14 Python
在类Unix系统上开始Python3编程入门
2015/08/20 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
Python中函数参数调用方式分析
2018/08/09 Python
Python3 关于pycharm自动导入包快捷设置的方法
2019/01/16 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
化学专业毕业生求职信
2014/07/28 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js