位置: IT常识 - 正文

Vue中的跨域解决方案(vue中解决跨域问题)

编辑:rootadmin
Vue中的跨域解决方案 前言

推荐整理分享Vue中的跨域解决方案(vue中解决跨域问题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue跨域问题解决,vue解决跨域的原理,vue跨域问题的三种解决方案,vue跨域解决方案 简书,vue解决跨域的原理,vue跨域解决方案 简书,vue跨域解决方案 简书,vue跨域解决方案 简书,内容如对您有帮助,希望把文章链接给更多的朋友!

跨域是因为浏览器存在对不同源页面数据接收的限制。这种限制就是浏览器的同源策略。

同源策略是浏览器的安全机制,跨域的原理就是通过各种方式避开浏览器的安全机制

使用

在项目开发时,对跨域的概念仅限于了解,所以没有注重过程,只注重结果。所以在开发项目时,使用的是市面上比较常用,并且能够一劳永逸的cors。虽然cors方法能够完美解决跨域问题,但是还是要秉持着对知识探索的态度,去深入理解跨域问题。

报错提示

这里我使用8080端口的客户端访问3000端口的服务器,结果报错。

原因是因为端口号不同产生跨域。

如果将服务器端口号改为8080就不会报错了。

跨域方法

跨域的方法有cors、Proxy正向代理、Nginx反向代理、Jsonp

现阶段跨域方式有很多种,但是基本思想只有两种:

绕过同源策略

Jsonp:历史遗留的产物,虽然思想很好,但是局限性太大(仅支持get、因为数据是在url中,所以携带数据小)。

原理:有三个标签不受同源策略影响:<script src="xxx"></script><link herf="xxx"></link><img src="xxx"></img>实现: // 1.创建script var script = document.createElement('script') // 2.定义回调函数 function getData(data) { // 调用函数返回的数据 console.log(data); } // 3.设置src属性 script.src = 'http://localhost:3000?callback=getData' // 4.让cript生效 document.appendChild(script)

Nginx:通过反向代理绕过去,这是很完美的解决方案,加上会给服务器增加一点压力,不过这点压力问题并不大

如何理解反向代理:代理服务器代替目标服务器去接收并响应给客户端发起的请求。隐藏服务器。

​ 发起请求:客户端向代理服务器发出请求,代理服务器再将请求转发给目标服务器

​ 响应数据:目标服务器向代理服务器响应数据,代理服务器再向数据响应给客户端

很常用的方法,像网易、头条都使用nginx代理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ddoEgRFd-1656482203293)(https://juejin.cn/)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4M4avsX0-1656482203293)(https://juejin.cn/)]

这是我在chrome上看的某些文件。

nginx使用:

下载nginx

直接到官网下载

Vue中的跨域解决方案(vue中解决跨域问题)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gaMNC5wi-1656482203294)(https://juejin.cn/)]

修改默认配置

打开conf/nginx.conf

配置代理端口

- 配置监听端口

> 输入 start nginx.exe 没有反应表示启动成功

Proxy:通过正向代理绕过去,让服务器帮我们向服务器发送请求,因为跨域均存在于浏览器与服务器之间。只能在本地开发环境使用。

如何理解正向代理:代理服务器代替客户端向服务器发起请求。隐藏客户端。

​ 发起请求:代理服务器从客户端发出请求,向目标服务器发起请求。

​ 响应数据:目标服务器响应请求,代理服务器接收请求,并转发给客户端。

日常使用的翻墙就是基于这个原理。

一句话概述正向代理和方向代理:正向代理客户端,反向代理服务器。

main.js

axios.defaults.baseURL = '/'

vue.config.js

module.exports = { devServer: { proxy: { '/': { target: 'http://localhost:3000', // 目标服务器 changeOrigin: true } } }}

这里我使用的是webpack proxy,是webpack提供的代理服务,方便易用,但是只适用于开发阶段

原理:在代理服务器传递数据给本地浏览器的过程中,两者同源,并不存在跨域行为,这时候浏览器就能正常接收数据

此时,只要浏览器访问根路径,代理服务器就会向目标服务器发起请求。

补充:CDN(内容分发网络)

简单来说就是,用户发起请求,请求会发送到最适合的服务器上。比如说,我在广州发送请求,请求就会发送到广州的服务器上。优点类似京东快递,发货的时候会优先选择就近的京东仓库,所以物流速度很快,同样的CDN也是加快网络请求速度。

cors

终级解决方案(IE9 以下除外)

跨域资源共享 (Cross-Origin Resource Sharing, CORS),就是在服务器端的响应中加入额外的HTTP头,使浏览器能跨域访问资源。

响应头需要设置的字段:Access-Control-Allow-Origin: *

我做项目时,使用方法是添加 cors 中间件

// 引入corsconst cors = require('cors')// 使用 cors()app.use(cors())

说明

跨域请求产生时,服务器是能够接收到数据的,并且也响应了数据,只不过在浏览器接收数据的时候,由于不同源的原因,出发了浏览器的安全机制,所以数据就被挡在浏览器外。

本文链接地址:https://www.jiuchutong.com/zhishi/300774.html 转载请保留说明!

上一篇:2023年AI十大展望:GPT-4领衔大模型变革,谷歌拉响警报,训练数据告急(2023年中国会有什么重大事件)

下一篇:js中遍历对象数组并获取对象相应的属性值(js怎样遍历对象中的每个元素)

  • 荣耀50se语音助手可以语音唤醒吗(荣耀50se语音助手)

    荣耀50se语音助手可以语音唤醒吗(荣耀50se语音助手)

  • miui12超级壁纸如何删除(小米miui12超级壁纸在哪里)

    miui12超级壁纸如何删除(小米miui12超级壁纸在哪里)

  • 抖音怎么清除喜欢里面的视频(抖音怎么清除喜欢里面的点赞)

    抖音怎么清除喜欢里面的视频(抖音怎么清除喜欢里面的点赞)

  • 华为手机莫名出现声音(华为手机莫名出现铃声)

    华为手机莫名出现声音(华为手机莫名出现铃声)

  • WPS文件名冲突怎么改(wps文件名冲突怎么办)

    WPS文件名冲突怎么改(wps文件名冲突怎么办)

  • oppoa8手机怎么关机(oppoa8手机怎么关机重启)

    oppoa8手机怎么关机(oppoa8手机怎么关机重启)

  • 华为手机充电发烫是什么原因(华为手机充电发热很烫 怎样处理方法)

    华为手机充电发烫是什么原因(华为手机充电发热很烫 怎样处理方法)

  • 魅族手机收不到验证码的原因(魅族手机收不到微信提示)

    魅族手机收不到验证码的原因(魅族手机收不到微信提示)

  • 手机的繁体字怎么把它设置为普通字(手机的繁体字怎么变成简体字)

    手机的繁体字怎么把它设置为普通字(手机的繁体字怎么变成简体字)

  • 华为m6支持office吗(华为M6支持指纹吗)

    华为m6支持office吗(华为M6支持指纹吗)

  • 华为荣耀20可不可以超级截屏(华为荣耀可不可以无线充电)

    华为荣耀20可不可以超级截屏(华为荣耀可不可以无线充电)

  • 美图手机t8缺点是什么(美图t8手机好不好)

    美图手机t8缺点是什么(美图t8手机好不好)

  • 快手怎么上传本地长视频(快手怎么上传本地作品)

    快手怎么上传本地长视频(快手怎么上传本地作品)

  • word统一改数字字体(一次性改word所有数字的格式)

    word统一改数字字体(一次性改word所有数字的格式)

  • 为什么抖音总是闪退(为什么抖音总是闪退怎么回事)

    为什么抖音总是闪退(为什么抖音总是闪退怎么回事)

  • 预售的东西怎么加入购物车(预售的东西怎么退款)

    预售的东西怎么加入购物车(预售的东西怎么退款)

  • 华为mate30隔空设置为什么没有(华为mate30隔空设置更改)

    华为mate30隔空设置为什么没有(华为mate30隔空设置更改)

  • 爱奇艺怎么看预约的电视剧(爱奇艺怎么查看预约)

    爱奇艺怎么看预约的电视剧(爱奇艺怎么查看预约)

  • oppo手机拦截电话如何解除(oppo手机拦截电话不显示)

    oppo手机拦截电话如何解除(oppo手机拦截电话不显示)

  • 趣步初级卷轴怎么兑换(趣步初级卷轴兑换密码)

    趣步初级卷轴怎么兑换(趣步初级卷轴兑换密码)

  • Bios密码忘记了怎么办 主板CMOS设置的Bios密码清除方法(联想笔记本bios密码忘记了)

    Bios密码忘记了怎么办 主板CMOS设置的Bios密码清除方法(联想笔记本bios密码忘记了)

  • 流程图拖拽视觉编程--概述(用流程图的形式写出视觉的形成过程)

    流程图拖拽视觉编程--概述(用流程图的形式写出视觉的形成过程)

  • 【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】(yolov3怎么用)

    【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】(yolov3怎么用)

  • 印花税核定征收文件
  • 实收资本利息收入可以资本化
  • 现金流量表中的销售商品提供劳务收到的现金
  • 员工报销公司是哪个部门
  • 税控服务费能抵扣吗
  • 保证金存款余额
  • 工程结算怎么结转收入
  • 卖二手车怎么做账务处理
  • 其他贷款服务的内容包括
  • 购买职工宿舍用品账务处理
  • 股权收购的好处
  • 单位购买小汽车一次性进成本报表怎么填写?
  • 估价入账是什么意思
  • 汽车销售行业的现状及发展趋势
  • 增值税普通发票有什么用
  • 太阳能真空管和普通管的区别
  • 借款支付工程款合法吗
  • 固定资产折旧率是多少
  • 研发费用界定标准
  • 制造费用月末怎么结转到生产成本
  • 小微企业免税的会计分录怎么写
  • 个人所得税跨年度能退吗
  • 电脑中毒后如何不装系统清理掉
  • 华为分享平时可不可以打开
  • 本年利润和利润总额的关系
  • 基于thinkphp的学园招聘系统项目源代码
  • 准备动作怎么做
  • 米苏拉塔是哪个国家
  • 资产为什么等于成本
  • php function函数的用法
  • input 文件
  • 贝尔纳贝
  • 选项式api和组合式api哪个好
  • 【BEV】TPVFormer复现以及原理
  • 负数发票的销售成本怎么做?
  • 来料加工成品如何入库
  • phpcms是什么意思
  • rabbitmq如何解决消息堆积问题
  • 帝国cms导入模板后怎样调用
  • MySQL慢查询优化面试问题
  • 金税盘已作废发票可以取消吗
  • 提交表单数据有哪几种方法,php如何获取表单提交的数据
  • 信用证保证金账户属于什么账户性质
  • 应付职工薪酬包含哪些科目
  • 主营业务成本如何设置明细
  • 事业单位的财政拨款怎么做账
  • 包工包料如何核算成本
  • 利润都为负数时增长比例怎么算
  • 多开税票的钱怎么算
  • 公司账户可以转账到信用卡吗
  • 房地产会计核算科目
  • mysql批量修改字段值
  • 数据库访问机制
  • win10安装mysql初始化失败原因
  • 微软雅黑可以免费用吗
  • windowsxp关机没反应
  • docker安装位置
  • mac所有窗口最小化
  • 怎么检测u盘是否扩容
  • win7修改系统版本
  • mac屏幕共享软件
  • window10路由
  • 选择打开程序
  • 新买的笔记本电脑需要做什么
  • linux限制用户cpu使用
  • win8自带驱动吗
  • Win10 Mobile 10586.71或时最适合WP8.1升级的Win10的版本
  • opengl基础知识
  • prototype.js中文文档
  • 简述jquery的优势
  • python,字符串
  • js代码怎么使用
  • js发送请求的几种方式
  • 淄博市税务局投诉电话
  • 国有企业租赁经营 河北省
  • 税控盘的口令密码是什么
  • 普通发票冲红怎么报税
  • 重置税务密码
  • 税务局查帐怎么查
  • 税务局政务公开目录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设