vue和springboot交互数据,使用axios【跨域问题】
vue和springboot交互数据,使用axios【跨域问题】
提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是node.js和vue的使用。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每个知识点,都是写出代码和运行结果且前后关联上的去分析和说明(能大量节约您的时间)。
所有文章都*不会*直接把代码放那里,让您自己去看去理解。我希望我的内容对您有用而努力~
文章目录
- vue和springboot交互数据,使用axios【跨域问题】
- 前言
- CORS
- 简单请求
- 非简单请求
- 代码编写(解决方式)
- 总结
本文章是系列文章,技术栈内容为:【springboot+vue】【前后分离】
【详细图文,实操步骤分享,节约时间版】。最终完成一个商业化项目。内容有:
springboot知识
mybatisPlus知识
vue知识
node.js知识
本小节的内容是:
vue篇章 之 : vue和springboot交互数据,使用axios【解决跨域问题】
每一个文章小节都会把 标题 说的很清楚。前后关联看,可以快速实现:前后分离。本质上,额外文章链接和文章自己标题内容关系不大。
前面小节文章已经实现springboot的创建,springboot关联前端数据swagger和springboot通过mybatisplus操作数据库:
【2025年】基于电脑的jdk1.8通过idea创建springboot2.x版本(非常简洁快速)
【上榜文章,一文搞定】现在springboot是3.x以上版本,jdk版本至少要求17.但是很多时候我们电脑是jdk1.8(求稳定性和安全性)。文本分享本机电脑1.8的jdk。idea如何非常简洁快速的创建springboot
文章里面也有 为什么只能是jdk17起和地址指定为阿里云报错的解决办法
本文章是重点描述:跨域问题
本文章是重点描述:跨域问题:不是一个同源数据,不能访问读写对方的资源
本文章是重点描述:同源策略是约定,是浏览器最核心最基本的安全问题
前面小节已经安装好node.js和分享了一些vue语法,及RESTful风格及安装配置swagger使用,和:
vue实现与后台springboot传递数据【传值/取值 Axios 】
这个文章是 Axios 详细语法和实现步骤
里面算是总结当前系列的所有代码汇总:有前端vue的,有后台springboot的。包括实际axios的语法
【它也是上榜文章,可以一看:里面有axios的快速实现代码】
链接文章里面:直接是实现Axios的案例解决方案(代码实例),代码已经直接解决了跨域,当然也标注了注释。没有那些代码的话,一直取不到数据。但是那个文章并没有详细去描述跨域问题。如果不解决跨域,就存在同源策略的问题:
前言
如果不解决跨域,就存在同源策略的问题
vue里面的axios 和 springboot里面的controller写在多都没有用。它不能交互数据
什么是同源策略:
所谓同源:即指向同一个域。就是两个页面具有相同的协议:主机(ip地址) 和 端口号(port)
当一个请求url的协议(http),域名(ip地址),**端口(port)**三者之间有任何一个与当前页面url不同,即为跨域。
此时无法读取非同源网页的cookie和无法向非同源地址发送ajax请求。
目前我们的项目:
node启动vue前端项目,端口是8080
idea启动springboot自带的tomcat,端口是8081
不管怎么样,是多少。它们两个端口都不是同一个,在程序和协议眼里,就是两个项目,两个地址。即为跨域
为了保证数据和浏览器的安全,全行业遵循:
不同源的客户端和url地址,在-没有-明确授权的情况下,不能读写对方的资源
很好理解和熟知:咱不能自己打开一个网站url,它就能把其他网站url的传输数据读取了,不可能。行业对于安全之一最基础的就是现在分享的同源策略
CORS
CORS(Cross-Origin Resource Sharing) 是由W3C制定的一种跨域资源共享技术标准,其目的就是为了解决当前的跨域请求
CORS可以在不破坏即有规则的情况下,去通过后端服务器实现CORS接口,从而实现跨域通信。
CORS将请求分为两类:简单请求和非简单请求,分别对跨域通信提供了支持。
简单请求
满足以下条件就是简单请求:
请求方法/提交方式:GET POST HEAD
除了以下请求头字段之外,没有自定义的请求头:
Accept、Accept-Language、Content-Language、Last-Event-ID、Content-Type
Content-Type的值 -只有- 以下三种:
text/plain multipart/form-data application/x-www-form-urlencoded
简单请求的服务器处理
对于简单请求,CORS的策略是请求时在请求头中添加一个Origin字段:
假设有一个网页https://example.com
需要从API服务https://api.example.com/data获取数据
由于这个请求满足简单请求的条件,浏览器会直接发送请求 (请求头request head) :
GET /data HTTP/1.1 Host: api.example.com Origin: https://example.com
做项目的时候 网页修改为ip地址一样的
服务器接收到请求之后,根据该字段判断是否允许这个请求的访问,如果允许,就在HTTP头中添加 Access-Control-Allow-Origin 字段
(相应response:)
HTTP/1.1 200 OK Access-Control-Allow-Origin: https://example.com Content-Type: application/json { “data”: “Sample data” }
非简单请求
不满足上述条件的请求即为非简单请求。例如,使用PUT、DELETE等方法,或者POST方法包含除Content-Type和Accept之外的其他头信息。
对于非简单请求,浏览器会先发送一个OPTIONS请求(预检请求)到服务器,以确认服务器是否允许跨域请求。
称为预检请求(preflight request)
预检请求将真实信息:请求方法,自定义字段,源信息添加到HTTP头信息中,询问服务器是否允许这样的操作。
服务器响应预检请求:服务器需要在响应中包含以下信息:
Access-Control-Allow-Origin:指定哪些源可以访问资源。
Access-Control-Allow-Methods:指定允许的方法。
Access-Control-Allow-Headers:指定允许的头信息。
实际请求:如果预检请求成功,浏览器会发送实际的非简单请求,服务器需要按照预检响应中的设置进行处理。
代码编写(解决方式)
简单请求和非简单请求
是浏览器层面的处理方式(打开浏览器开发者工具,查询network网络,可以看到请求头…和响应…)。
一般开发里面,我们去springboot后台服务器添加对应的代码:
springboot中配置CORS
编写一个工具类:
@Configuration
public class CorsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("*/**") //允许跨域访问的路径.allowedOrigins("*") //允许跨域访问的源.allowedMethods("GET","POST","PUT","OPTIONS","DELETE") //允许请求的方式.maxAge(1000000) //预检的时间.allowedHeaders("*") //允许头部设置.allowCredentials(true); //是否发送cookie}
}// 工具类 可以配置的很细节
// 目前是基本全部权限都放开了:(如果您感觉前后分离,有跨域问题,可以直接复制)
不想使用工具类,在对应的某一个controller类上面,加@CrossOrigin:
表示:这个类里面的方法路径,都允许跨域访问,没有配置类里面写的那么细节
@RestController
@CrossOrigin
public class UserController {}
总结
说明一下:整个这个系列实现前后分离的springboot+vue项目。序号文章一共也就10几篇,只有核心图文重点操作步骤来实现这个目标(基本上您边看边写:一个小时或者一上午就能跟着一起手搓一个前后分离项目,然后您可以自行添加功能和内容在您项目里面)
(会陆续更新非常多的IT技术知识及泛IT的电商知识,可以点个关注,共同交流。ღ( ´・ᴗ・` )比心)
(也欢迎评论,提问。 我会依次回答~)
相关文章:

vue和springboot交互数据,使用axios【跨域问题】
vue和springboot交互数据,使用axios【跨域问题】 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是node.js和vue的使用。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】&…...

AJAX 使用 和 HTTP
ajax学习 promise和 awit Node.js 和 webpack 前端工程化 Git工具 AJAX异步的JS和XML: 使用XML对象和服务器通信 在这里插入图片描述 统一资源定位符 URL HTTP 超文本传输协议 域名 资源路径 资源目录和类型 URL 查询参数 使用?表示之后的参数…...

MySQL之基础事务
目录 引言: 什么是事务? 事务和锁 mysql数据库控制台事务的几个重要操作指令(transaction.sql) 1、事物操作示意图: 2.事务的隔离级别 四种隔离级别: 总结一下隔离指令 1. 查看当前隔离级别 …...
uniapp设置 overflow:auto;右边不显示滚动条的问题
设置了overflow:auto;或者其它overflow的属性不显示滚动条是因为在uniapp中默认隐藏了滚动条 解决方法: //强制显示滚动条 ::-webkit-scrollbar {width: 8px !important;background: #ccc !important;display: block !important;}//设置滚动条颜色.cu-…...
数据库基础复习笔记
数据库 相关概念 名称全称检查数据库存储数据的仓库,数据是有组织的进行存储DataBase(DB)数据库管理系统操作和管理数据库的大型软件DataBase Management System(DBMS)SQL操作关系型数据库的编程语言,定义了一套操作关系型数据库…...

MySQL基础关键_013_常用 DBA 命令
目 录 一、MySQL 用户信息存储位置 二、新建用户 1.创建本地用户 2.创建外网用户 三、用户授权 1.说明 2.实例 四、撤销授权 五、修改用户密码 六、修改用户名、主机名/IP地址 七、删除用户 八、数据备份 1.导出数据 2.导入数据 (1)方式…...
爬虫请求频率应控制在多少合适?
爬虫请求频率的控制是一个非常重要的问题,它不仅关系到爬虫的效率,还涉及到对目标网站服务器的影响以及避免被封禁的风险。合理的请求频率需要根据多个因素来综合考虑,以下是一些具体的指导原则和建议: 一、目标网站的政策 查看网…...
探秘网络邮差:FTP、Telnet、SMTP、NFS、SNMP介绍
引言:谁是网络世界的“邮差”? 想象一下,你正在网上冲浪——发送一封邮件、上传一份文件、远程登录服务器,甚至只是打开一个网页。这些看似简单的操作背后,其实有一群默默无闻的“邮差”在辛勤工作。它们就是应用层协…...

java基础:异常体系
目录 一、java异常体系介绍二、异常1、运行时异常2、非运行时异常 三、错误四、异常的处理方式1、方式1:throws声明抛出异常1.1、throws关键字1.2、throw关键字 2、方式2:try-catch-finally 一、java异常体系介绍 异常体系图如下: Throwable…...
CSS Grid布局:从入门到实战
CSS Grid布局:从入门到实战 一、初识Grid布局 还在为网页布局发愁吗?Flexbox虽然好用,但当遇到复杂布局时,CSS Grid才是真正的王者。Grid布局是CSS中最强大的二维布局系统,它就像一张无形的网格纸,让我们…...

记录算法笔记(20025.5.14)对称二叉树
给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false 提示: 树中节点数目…...

QT Creator配置Kit
0、背景:qt5.12.12vs2022 记得先增加vs2017编译器 一、症状: 你是否有以下症状? 1、用qt新建的工程,用qmake,可惜能看见的只有一个pro文件? 2、安装QT Creator后,使用MSVC编译显示no c com…...

JVM 与云原生的完美融合:引领技术潮流
最近佳作推荐: Java 大厂面试题 – 揭秘 JVM 底层原理:那些令人疯狂的技术真相(New) Java 大厂面试题 – JVM 性能优化终极指南:从入门到精通的技术盛宴(New) Java 大厂面试题 – JVM 深度剖析&…...
Ubuntu24.04编译ORB_SLAM的一系列报错解决
Ubuntu24.04编译ORB_SLAM的一系列报错解决 decay_t报错 报错信息:error: ‘decay_t’ is not a member of ‘std’;did you mean ‘decay’ 将CMakeLists.txt中第17行的c标准修改为c14即可: 修改前: CHECK_CXX_COMPILER_FLAG…...

为何大模型都使用decoder-only?
第一章 架构之争的历史脉络 1.1 从双向到单向的革命 2017年,BERT的横空出世让双向注意力机制成为NLP领域的“武林盟主”。通过Masked Language Modeling(MLM),BERT在阅读理解、情感分析等任务中展现出惊人的表现,但它…...
《Effective Python》第2章 字符串和切片操作——Python 字符串格式化的现代选择f-strings
引言 本篇博客基于学习《Effective Python》第三版 Chapter 2: Strings and Slicing 的 Item 11 “Prefer Interpolated F-Strings Over C-style Format Strings and str.format” 的总结与延伸。 字符串格式化是 Python 编程中的常见操作,用于动态生成可读性高的…...

企业报表平台如何实现降本增效
一、你的企业是否正被这些问题拖累? 财务还在手动汇总各门店的Excel销售数据;市场部总抱怨“客户分析全靠拍脑袋”;仓库突然发现爆款断货,但上周的报表显示库存充足…… 这些场景你是否熟悉?数据散落在ERP、E…...

Ollama+OpenWebUI+docker完整版部署,附带软件下载链接,配置+中文汉化+docker源,适合内网部署,可以局域网使用
前言: 因为想到有些环境可能没法使用外网的大模型,所以可能需要内网部署,看了一下ollama适合小型的部署,所以就尝试了一下,觉得docker稍微简单一点,就做这个教程的,本文中重要的内容都会给下载…...
git push 报错:send-pack: unexpected disconnect while reading sideband packet
背景 新建了一个仓库,第一次push 代码文件,文件中有一个依赖的jar,有80MB,结果push的时候报错。 错误信息 error: RPC failed; HTTP 500 curl 22 The requested URL returned error: 500 send-pack: unexpected disconnect whi…...
考研英一真题学习笔记 2018年
2018 年全国硕士研究生招生考试 英语 (科目代码:201) Section Ⅰ Use of English Directions: Read the following text. Choose the best word(s) for each numbered blank and mark A, B, C or D on the ANSWER SHEET. (10 points) Trust i…...

ultralytics中tasks.py---parse_model函数解析
一、根据scale获取对应的深度、宽度和最大通道数 具体例如yaml文件内容如下: depth=0.33,那么重复的模块例如C2f原本重复次数是3,6,6,3,那么T对应的模型重复次数就是三分之一即1,1,2,1次。这个在后面定义的: width=0.25,max_channels=1024 原本c2=64,但经过make_div…...
Java知识框架
一、Java 基础语法 1. 基础语法 数据类型 基本类型:int, double, boolean, char 等 引用类型:String, 数组, 对象 变量与常量 final 关键字 作用域(局部变量、成员变量) 运算符 算术、逻辑、位运算 三元运算符 ? : 控制…...

2024年业绩增速大幅回退,泸州老窖未能“重回前三”
撰稿|行星 来源|贝多财经 回望过去的2024年,受制于购买力与消费需求的持续疲软,白酒行业的发展面临诸多复杂性与不确定性,“量价齐跌”犹如笼罩在各大企业头顶的一片阴云。 正如巴菲特所言:“当潮水退去时,才知道谁在…...

院校机试刷题第二天:1479 01字符串、1701非素数个数
一、1479 01字符串 1.题目描述 2.解题思路 方法一:暴力法 模拟过程,列出几个数据来a[1]1, a[2]2, a[3]3, a[4]5以此类推,这就是斐波那契数列,每一项都等于前两项之和,确定好a[1], a[2]即可。 方法二:动…...
【Vue.js 的核心魅力:深入理解声明式渲染】
Vue.js 的核心魅力:深入理解声明式渲染 在现代前端框架的浪潮中,Vue.js 以其轻量、易学、高效的特点赢得了广大开发者的青睐。其核心魅力之一,便是其优雅的**声明式渲染 (Declarative Rendering)**机制。理解声明式渲染不仅能帮助我们更好地…...

制作一款打飞机游戏48:敌人转向
射击功能 有一个重要的功能我们还没实现,那就是射击。目前,敌人还不能射击,这显然是不行的。因此,我们决定添加一个射击命令,暂时用一个显示圆圈的方式来表示射击动作。 编程语言的调试 有趣的是,我们创…...
鸿蒙OSUniApp打造多功能图表展示组件 #三方框架 #Uniapp
使用UniApp打造多功能图表展示组件 在当前移动应用开发领域,数据可视化已成为不可或缺的一部分。无论是展示销售数据、用户增长趋势还是其他业务指标,一个优秀的图表组件都能有效提升用户体验。UniApp作为一款跨平台开发框架,如何在其中实现…...
Chrome浏览器实验性API computePressure的隐私保护机制如何绕过?
一、computePressure API 设计原理与隐私保护机制 1.1 API 设计目标 computePressure是W3C提出的系统状态监控API,旨在: • 提供系统资源状态的抽象指标(非精确值) • 防止通过高精度时序攻击获取用户指纹 • 平衡开发者需求与用户隐私保护 1.2 隐私保护实现方式 // 典…...

RK3588 串行解串板,支持8路GMSL相机
RK3588 支持的 GMSL 相机接入数量取决于所使用的解串板型号及配置方案: xcDeserializer3.0 解串板 可接入最多 8 路 2M GMSL2 相机1。 xcDeserializer4.0 解串板 支持 4 路 2M GMSL2 相机1。 边缘计算盒解决方案 部分商用方案可实现 4 或 8…...

OracleLinux7.9-ssh问题
有套rac环境,db1主机无法ssh db1和db1-priv,可以ssh登录 db2和db2-priv [rootdb1 ~]# ssh db1 ^C [rootdb1 ~]# ssh db2 Last login: Wed May 14 18:25:19 2025 from db2 [rootdb2 ~]# ssh db2 Last login: Wed May 14 18:25:35 2025 from db1 [rootdb2…...