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 相关文章推荐
html5+javascript制作简易画板附图
Apr 25 Javascript
解决JS无法调用Controller问题的方法
Dec 31 Javascript
即将发布的jQuery 3 有哪些新特性
Apr 14 Javascript
Javascript中获取浏览器类型和操作系统版本等客户端信息常用代码
Jun 28 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
Jan 08 Javascript
Vue2.0 UI框架ElementUI使用方法详解
Apr 14 Javascript
Angular2生命周期钩子函数的详细介绍
Jul 10 Javascript
关于vue-resource报错450的解决方案
Jul 24 Javascript
JavaScript键盘事件常见用法实例分析
Jan 03 Javascript
vue与bootstrap实现简单用户信息添加删除功能
Feb 15 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
Apr 28 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
May 10 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实现数组按指定KEY排序的方法
2015/03/30 PHP
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
js表格分页实现代码
2009/09/18 Javascript
jQuery chili图片远处放大插件
2009/11/30 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
js 颜色选择插件
2017/01/23 Javascript
Validform验证时可以为空否则按照指定格式验证
2017/10/20 Javascript
基于vue-element组件实现音乐播放器功能
2018/05/06 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
新手如何快速入门Python(菜鸟必看篇)
2017/06/10 Python
python+django加载静态网页模板解析
2017/12/12 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
对tensorflow中cifar-10文档的Read操作详解
2020/02/10 Python
Django的CVB实例详解
2020/02/10 Python
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
大学生就业自我鉴定
2013/10/26 职场文书
党校学习思想汇报
2014/01/06 职场文书
机关门卫制度
2014/02/01 职场文书
市场营销毕业生自荐信范文
2014/04/01 职场文书
有关环保的标语
2014/06/13 职场文书
企业战略合作意向书
2015/05/08 职场文书
男生贾里读书笔记
2015/06/30 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python
Python办公自动化解决world文件批量转换
2021/09/15 Python
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫
Win11安装升级时提示“该电脑必须支持安全启动”
2022/04/19 数码科技