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 QueryString解析类代码
Jan 17 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
Jul 31 Javascript
javascript中不等于的代码是什么怎么写
Dec 29 Javascript
解决Jquery鼠标经过不停滑动的问题
Mar 03 Javascript
DOM操作一些常用的属性汇总
Mar 13 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
Aug 04 Javascript
ClearTimeout消除闪动实例代码
Feb 29 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
Aug 16 Javascript
浅谈vue的踩坑路
Aug 31 Javascript
原生js封装运动框架的示例讲解
Oct 01 Javascript
ES7之Async/await的使用详解
Mar 28 Javascript
vue elementUI 表单校验功能之数组多层嵌套
Jun 04 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/10/11 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
PHP中cookie知识点学习
2018/05/06 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
javascript 动态生成私有变量访问器
2009/12/06 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
如何解决手机浏览器页面点击不跳转浏览器双击放大网页
2016/07/01 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
jquery+html仿翻页相册功能
2016/12/20 Javascript
layui文件上传实现代码
2017/05/20 Javascript
Angular2管道Pipe及自定义管道格式数据用法实例分析
2017/11/29 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
2019/06/04 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
vue中template的三种写法示例
2020/10/21 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
2020/11/04 Javascript
[04:22]DOTA2上海特级锦标赛主赛事第四日TOP10
2016/03/06 DOTA
Python使用Mechanize模块编写爬虫的要点解析
2016/03/31 Python
Python 判断 有向图 是否有环的实例讲解
2018/02/01 Python
Python 实现集合Set的示例
2020/12/21 Python
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
STRATHBERRY苏贝瑞包包官网:西班牙高级工匠手工打造
2020/11/10 全球购物
会计专业推荐信
2013/10/29 职场文书
大专生简历的自我评价
2013/11/26 职场文书
一份文言文检讨书
2014/09/13 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
教师求职简历自我评价
2015/03/10 职场文书
校运会加油稿大全
2015/07/22 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书