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实现表格排序方法
Jun 14 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
Oct 09 Javascript
跟我学习javascript的函数调用和构造函数调用
Nov 16 Javascript
正则表达式优化JSON字符串的技巧
Dec 24 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
Feb 28 Javascript
微信小程序 loading(加载中提示框)实例
Oct 28 Javascript
微信小程序 toast 详解及实例代码
Nov 09 Javascript
JavaScript简单生成 N~M 之间随机数的方法
Jan 13 Javascript
Javascript 两种刷新方法以及区别和适用范围
Jan 17 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
Aug 17 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
Jan 22 Javascript
Servlet返回的数据js解析2种方法
Dec 12 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生成文件
2007/01/15 PHP
PHP 无限级分类
2017/05/04 PHP
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
Ext 今日学习总结
2010/09/19 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
Jquery获得控件值的三种方法总结
2014/02/13 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
jQuery对象与DOM对象转换方法详解
2016/05/10 Javascript
基于Phantomjs生成PDF的实现方法
2016/11/07 Javascript
Bootstrap模态窗口源码解析
2017/02/08 Javascript
Js经典案例的实例代码
2018/05/10 Javascript
JS实现获取数组中最大值或最小值功能示例
2019/03/02 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
python多进程中的内存复制(实例讲解)
2018/01/05 Python
django 多数据库配置教程
2018/05/30 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
2018/10/17 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
Python配置文件处理的方法教程
2019/08/29 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
python 基于opencv 绘制图像轮廓
2020/12/11 Python
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
HTML5 canvas基本绘图之绘制线条
2016/06/27 HTML / CSS
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
户外婚礼策划方案
2014/02/08 职场文书
派出所班子党的群众路线对照检查材料思想汇报
2014/10/01 职场文书
办理护照工作证明
2014/10/10 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
一行Python命令实现批量加水印
2022/04/07 Python