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[js]获取url参数的代码
Oct 17 Javascript
ext实现完整的登录代码
Aug 08 Javascript
Jquery 设置标题的自动翻转
Oct 03 Javascript
window resize和scroll事件的基本优化思路
Apr 29 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
Nov 02 Javascript
js Calender控件使用详解
Jan 05 Javascript
Jquery检验手机号是否符合规则并根据手机号检测结果将提交按钮设为不同状态
Nov 26 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
Jan 22 Javascript
JS中常用的输出方式(五种)
Jun 12 Javascript
深入浅析JavaScript中的3DES
Aug 24 Javascript
微信小程序 视图容器组件的详解及实例代码
Jan 19 Javascript
JS实现简单控制视频播放倍速的实例代码
Apr 18 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远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
php 猴子摘桃的算法
2017/06/20 PHP
ExtJs 3.1 XmlTreeLoader Example Error
2010/02/09 Javascript
两种简单实现菜单高亮显示的JS类代码
2010/06/27 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
Python队列的定义与使用方法示例
2017/06/24 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
Django框架序列化与反序列化操作详解
2019/11/01 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
python实现ip地址的包含关系判断
2020/02/07 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
AJAX的优缺点都有什么
2015/08/18 面试题
建筑实习自我鉴定
2013/10/18 职场文书
环保建议书600字
2014/05/14 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
红色故事汇观后感
2015/06/18 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
Oracle表空间与权限的深入讲解
2021/11/17 Oracle