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 相关文章推荐
onpropertypchange
Jul 01 Javascript
javascript 全角转换实现代码
Jul 17 Javascript
javascript与CSS复习(三)
Jun 29 Javascript
jquery选择器使用详解
Apr 08 Javascript
jQuery表格排序组件-tablesorter使用示例
May 26 Javascript
jQuery源码分析之Callbacks详解
Mar 13 Javascript
jQuery编程中的一些核心方法简介
Aug 14 Javascript
基于dropdown.js实现的两款美观大气的二级导航菜单
Sep 02 Javascript
jquery form表单获取内容以及绑定数据
Feb 24 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
Jun 25 Javascript
微信小程序开发之IOS和Android兼容的问题
Sep 26 Javascript
js Proxy的原理详解
May 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
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
Bootstrap每天必学之表格
2015/11/23 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
JavaScript中关于base64的一些事
2019/05/06 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
vue-cli创建的项目中的gitHooks原理解析
2020/02/14 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
python利用hook技术破解https的实例代码
2013/03/25 Python
对Python使用mfcc的两种方式详解
2019/01/09 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
2019/11/25 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
基于CentOS搭建Python Django环境过程解析
2020/08/24 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
2021/02/20 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
使用HTML5的Canvas绘制曲线的简单方法
2015/09/08 HTML / CSS
Meli Melo官网:名媛们钟爱的英国奢侈手包品牌
2017/04/17 全球购物
Eagle Eyes Optics鹰眼光学:高性能太阳镜
2018/12/07 全球购物
函授本科自我鉴定
2013/11/03 职场文书
列车长先进事迹材料
2014/01/25 职场文书
《木笛》教学反思
2014/03/01 职场文书
艺术教育实施方案
2014/05/03 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
监察建议书
2015/02/04 职场文书
个人催款函范文
2015/06/23 职场文书
php引用传递
2021/04/01 PHP