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 面向对象 继承
May 13 Javascript
用JS实现3D球状标签云示例代码
Dec 01 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
Mar 25 Javascript
Ionic实现页面下拉刷新(ion-refresher)功能代码
Jun 03 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
Jul 22 Javascript
Node.js连接postgreSQL并进行数据操作
Dec 18 Javascript
JS 调用微信扫一扫功能
Dec 22 Javascript
php输出全部gb2312编码内的汉字方法
Mar 04 Javascript
微信小程序之滚动视图容器的实现方法
Sep 26 Javascript
使用vue-router为每个路由配置各自的title
Jul 30 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
Aug 31 Javascript
Vue Extends 扩展选项用法完整实例
Sep 17 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数据缓存技术
2007/02/14 PHP
PHP 函数call_user_func和call_user_func_array用法详解
2014/03/02 PHP
php数组合并的二种方法
2014/03/21 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
Laravel网站打开速度优化的方法汇总
2017/07/16 PHP
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
js替换字符串中所有指定的字符(实现代码)
2016/08/17 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
2018/09/29 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
JS字符串与二进制的相互转化实例代码详解
2019/06/28 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
Python类的多重继承问题深入分析
2014/11/09 Python
Python 实现使用dict 创建二维数据、DataFrame
2018/04/13 Python
python抽取指定url页面的title方法
2018/05/11 Python
python实现换位加密算法的示例
2018/10/14 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
python每5分钟从kafka中提取数据的例子
2019/12/23 Python
解决Pycharm中恢复被exclude的项目问题(pycharm source root)
2020/02/14 Python
学习python需要有编程基础吗
2020/06/02 Python
html5桌面通知(Web Notifications)实例解析
2014/07/07 HTML / CSS
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
中学生秋季运动会广播稿
2014/09/21 职场文书
2015年计划生育责任书
2015/05/08 职场文书
使用python将HTML转换为PDF pdfkit包(wkhtmltopdf) 的使用方法
2022/04/21 Python