vue解决跨域问题(推荐)


Posted in Javascript onNovember 10, 2020

一.什么是跨域

跨域问题的出现是因为浏览器的同源策略问题,所谓同源:就是两个页面具有相同的协议(protocol),主机(host)和端口号(port),它是浏览器最核心也是最基本的功能,如果没有同源策略我们的浏览器将会十分的不安全,随时都可能受到攻击。

当我们请求一个接口的时候,出现如:Access-Control-Allow-Origin 字眼的时候说明请求跨域了

vue解决跨域问题(推荐)

二.如何解决跨域问题

1.使用jsonp实现,网页通过script标签向服务器请求json数据,服务器受到请求后,将数据放在一个指定名字的回调函数的参数里面传给前端。

<script src="http://www.test.com/getData?callback=getData"></script>
// 向服务器test.com发出请求,该请求的查询字符串有一个callback参数,用来指定回调函数的名字

// 处理服务器返回回调函数的数据
<script type="text/javascript">
  // 服务器返回的数据会放到回调函数里面
  function getData(res){
    // 处理获得的数据
    console.log(res.data)
  }
</script>

2.使用Jquery ajax实现,

$.ajax({
 url: 'http://www.test.com:8888/getData',
 type: 'get',
 dataType: 'jsonp', // 请求方式为jsonp
 jsonpCallback: "handleCallback",  // 自定义回调函数名
 data: {}
})

3.在vue开发中实现跨域:在vue项目根目录下找到vue.config.js文件(如果没有该文件则自己创建),在proxy中设置跨域

devServer: {
  proxy: { //配置跨域
   '/api': {
    target: 'http://121.121.67.254:8185/', //这里后台的地址模拟的;应该填写你们真实的后台接口
    changOrigin: true, //允许跨域
    pathRewrite: {
     /* 重写路径,当我们在浏览器中看到请求的地址为:http://localhost:8080/api/core/getData/userInfo 时
      实际上访问的地址是:http://121.121.67.254:8185/core/getData/userInfo,因为重写了 /api
      */
     '^/api': '' 
    }
   },
  }
 },

在vue中使用proxy进行跨域的原理是:将域名发送给本地的服务器(启动vue项目的服务,loclahost:8080),再由本地的服务器去请求真正的服务器。

以下是我在开发vue项目中实现跨域的步骤:

1.在proxy中设置要访问的地址,并重写/api为空的字符串,因为我们真正请求的地址是没有带/api,这个重写很重要!!!

vue解决跨域问题(推荐)

2.在创建axios实例的时候将baseURL设置为/api ,这时候我们的跨域就已经完成了。

vue解决跨域问题(推荐)

3. 假如请求的真正地址为:http://121.121.67.254:8185/core/getdata/userInfo,但我们在浏览器上会看到是这样的: http://localhost:8080/api/core/getData/userInfo ,多了个/api,但并不影响我们请求数据。

vue解决跨域问题(推荐)

到此这篇关于vue解决跨域问题(推荐)的文章就介绍到这了,更多相关vue解决跨域内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
基于jquery的Repeater实现代码
Jul 17 Javascript
Ajax执行顺序流程及回调问题分析
Dec 10 Javascript
jQuery+easyui中的combobox实现下拉框特效
Feb 27 Javascript
js实现鼠标点击文本框自动选中内容的方法
Aug 20 Javascript
JavaScript中获取时间的函数集
Aug 16 Javascript
JavaScript的兼容性与调试技巧
Nov 22 Javascript
template.js前端模板引擎使用详解
Oct 10 Javascript
vue父组件向子组件(props)传递数据的方法
Jan 02 Javascript
Vue.js实现的表格增加删除demo示例
May 22 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
Jun 24 Javascript
js实现点击图片在屏幕中间弹出放大效果
Sep 11 Javascript
js实现上传图片到服务器
Apr 11 Javascript
关于vue 项目中浏览器跨域的配置问题
Nov 10 #Javascript
如何在vue 中引入使用jquery
Nov 10 #jQuery
Vue + ts实现轮播插件的示例
Nov 10 #Javascript
vue router返回到指定的路由的场景分析
Nov 10 #Javascript
如何将Node.js中的回调转换为Promise
Nov 10 #Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
Nov 09 #Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 #jQuery
You might like
从MySQL数据库表中取出随机数据的代码
2007/09/05 PHP
PHP中spl_autoload_register函数的用法总结
2013/11/07 PHP
php简单计算年龄的方法(周岁与虚岁)
2016/12/06 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
转换字符串为json对象的方法详解
2013/11/29 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
angularJS 入门基础
2015/02/09 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
2019/02/20 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
JavaScript利用键盘码控制div移动
2020/03/19 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
pip matplotlib报错equired packages can not be built解决
2018/01/06 Python
详解PyCharm配置Anaconda的艰难心路历程
2018/08/13 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
python+numpy实现的基本矩阵操作示例
2019/07/19 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
Python gevent协程切换实现详解
2020/09/14 Python
如何让IE9以下版本(ie6/7/8)认识html5元素
2013/04/01 HTML / CSS
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
英国最大的汽车交易网站:Auto Trader UK
2016/09/23 全球购物
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
Nisbets爱尔兰:英国最大的厨房和餐饮设备供应商
2019/01/26 全球购物
HashMap和Hashtable的区别
2013/05/18 面试题
Jar包的作用是什么
2014/03/30 面试题
化学实验员岗位职责
2013/12/28 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
法定代表人证明书
2014/11/28 职场文书
HTML5 新增内容和 API详解
2021/11/17 HTML / CSS
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js