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 form表单提交插件asp.net后台中文解码
Jun 12 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
Aug 28 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
Aug 25 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
Feb 03 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
Jun 17 Javascript
JS中with的替代方法与String中的正则方法详解
Dec 23 Javascript
小发现之浅谈location.search与location.hash的问题
Jun 23 Javascript
微信小程序实现页面分享onShareAppMessage
Aug 12 Javascript
Vue中图片Src使用变量的方法
Oct 30 Javascript
Vue项目中使用flow做类型检测的方法
Mar 18 Javascript
typescript配置alias的详细步骤
Aug 12 Javascript
15个值得收藏的JavaScript函数
Sep 15 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
又拍云异步上传实例教程详解
2016/04/19 PHP
利用php输出不同的心形图案
2016/04/22 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
javaScript实现浮点数转十六进制字符
2013/10/29 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
javascript实现动态标签云
2015/10/16 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
2019/11/04 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
python实现的文件夹清理程序分享
2014/11/22 Python
python使用Tkinter显示网络图片的方法
2015/04/24 Python
python实现最长公共子序列
2018/05/22 Python
详解Python if-elif-else知识点
2018/06/11 Python
python redis 删除key脚本的实例
2019/02/19 Python
python 自动批量打开网页的示例
2019/02/21 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
Python新手学习装饰器
2020/06/04 Python
keras自定义损失函数并且模型加载的写法介绍
2020/06/15 Python
印尼网上商店:Alfacart.com
2019/03/11 全球购物
2014社区三八妇女节活动总结
2014/03/01 职场文书
大课间体育活动方案
2014/03/12 职场文书
村党支部公开承诺书
2014/05/29 职场文书
银行开户授权委托书格式
2014/10/10 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
基于tensorflow权重文件的解读
2021/05/26 Python
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL