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 相关文章推荐
利用js对象弹出一个层
Mar 26 Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
Nov 20 Javascript
javascript 单例/单体模式(Singleton)
Apr 07 Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
Jan 17 Javascript
分享一款基于jQuery的视频播放插件
Oct 09 Javascript
JQuery实现防止退格键返回的方法
Feb 12 Javascript
Jquery实现动态切换图片的方法
May 18 Javascript
简介JavaScript中substring()方法的使用
Jun 06 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
Nov 16 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
Nov 10 jQuery
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
Mar 13 Javascript
Vue的props父传子的示例代码
May 20 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将数据库导出成excel的方法
2010/05/07 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
2012/02/05 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
javascript Array.prototype.slice使用说明
2010/10/11 Javascript
jQuery+.net实现浏览更多内容(改编php版本)
2013/03/28 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
详解使用PM2管理nodejs进程
2017/10/24 NodeJs
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
vue-router源码之history类的浅析
2019/05/21 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
vue解决跨域问题(推荐)
2020/11/10 Javascript
python中定义结构体的方法
2013/03/04 Python
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
Python的动态重新封装的教程
2015/04/11 Python
python 除法保留两位小数点的方法
2018/07/16 Python
使用python模拟命令行终端的示例
2019/08/13 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
澳大利亚买卖正宗二手奢侈品交易平台:Luxe.It.Fwd
2019/10/16 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
如何将字串String转换成整数int
2015/02/21 面试题
大学生个人简历自我评价
2013/11/16 职场文书
施工员岗位职责
2014/03/16 职场文书
家长学校工作方案
2014/05/07 职场文书
五水共治一句话承诺
2014/05/30 职场文书
火锅店的活动方案
2014/08/15 职场文书
2014群众路线学习笔记
2014/11/06 职场文书
交通肇事罪辩护词
2015/05/21 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书