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 相关文章推荐
javascript与css3动画结合使用小结
Mar 11 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
Sep 08 Javascript
Bootstrap源码解读网格系统(3)
Dec 22 Javascript
微信小程序 Button 组件详解及简单实例
Jan 10 Javascript
基于Vue实现支持按周切换的日历
Sep 24 Javascript
vue 实现全选全不选的示例代码
Mar 29 Javascript
Koa 使用小技巧(小结)
Oct 22 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
Dec 10 jQuery
基于vue.js组件实现分页效果
Dec 29 Javascript
vue.js实现备忘录demo
Jun 26 Javascript
jQuery 选择器用法基础入门示例
Jan 04 jQuery
React实现轮播效果
Aug 25 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
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
JQuery 写的个性导航菜单
2009/12/24 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
js 文本滚动效果的实例代码
2013/08/17 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
three.js 将图片马赛克化的示例代码
2020/07/31 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
Python进阶之尾递归的用法实例
2018/01/31 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
python版百度语音识别功能
2019/07/09 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
python中re模块知识点总结
2021/01/17 Python
Ubuntu20下的Django安装的方法步骤
2021/01/24 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
Tarte Cosmetics官网:美国最受欢迎的化妆品公司之一
2017/08/24 全球购物
跑操口号
2014/06/12 职场文书
教师职位说明书
2014/07/29 职场文书
作风建设整改方案
2014/10/27 职场文书
项目经理岗位职责
2015/01/31 职场文书
2015年材料员工作总结
2015/04/30 职场文书
初中数学教学随笔
2015/08/15 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
tensorflow+k-means聚类简单实现猫狗图像分类的方法
2021/04/28 Python
MySql新手入门的基本操作汇总
2021/05/13 MySQL
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript