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实现div拖拽宽度示例代码
Jul 31 Javascript
jquery监听div内容的变化具体实现思路
Nov 04 Javascript
编写高性能Javascript代码的N条建议
Oct 12 Javascript
jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】
Jul 19 Javascript
Angular的模块化(代码分享)
Dec 26 Javascript
javascript常用经典算法详解
Jan 11 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
Jan 16 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
Nov 02 Javascript
React Hooks的深入理解与使用
Nov 12 Javascript
Vue实现table上下移动功能示例
Feb 21 Javascript
vue实现简单跑马灯效果
May 25 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
Jul 22 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
cmd下运行php脚本
2008/11/25 PHP
PHP中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
codeigniter实现get分页的方法
2015/07/10 PHP
php的常量和变量实例详解
2017/06/27 PHP
关于laravel5.5的定时任务详解(demo)
2019/10/23 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
2020/12/30 PHP
jquery简单体验
2007/01/10 Javascript
js图片轮播手动切换效果
2015/11/10 Javascript
javascript实现一个简单的弹出窗
2016/02/22 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
浅谈VUE监听窗口变化事件的问题
2018/02/24 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
理顺8个版本vue的区别(小结)
2018/09/17 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
在vue中使用axios实现post方式获取二进制流下载文件(实例代码)
2019/12/16 Javascript
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
Python base64编码解码实例
2015/06/21 Python
人生苦短我用python python如何快速入门?
2018/03/12 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
Python datetime 如何处理时区信息
2020/09/02 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
CSS3 文字动画效果
2020/11/12 HTML / CSS
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
JAVA代码查错题
2014/10/10 面试题
如何用SQL语句进行模糊查找
2015/09/25 面试题
爽歪歪广告词
2014/03/20 职场文书
酒店开业庆典主持词
2014/03/21 职场文书
党的群众路线教育实践方案
2014/05/11 职场文书
建筑施工安全生产责任书
2014/07/22 职场文书
解放思想大讨论活动心得体会
2014/09/11 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python