Spring Boot + Vue 前后端分离项目总结:解决 CORS 和 404 问题
Spring Boot + Vue 前后端分离项目总结:解决 CORS 和 404 问题
在进行前后端分离的项目开发中,我们遇到了几个关键问题:跨域问题 (CORS) 和 404 路由匹配错误。以下是这些问题的详细分析和最终的解决方案。
问题描述
-
跨域请求被阻止 (CORS)
- 当前端在
http://localhost:8080发送 AJAX 请求到后端http://localhost:3000时,浏览器由于安全策略阻止了跨域请求。这导致了前端无法获取到后端的数据,出现了CORS policy错误。
- 当前端在
-
路径匹配的
404 Not Found错误- 即使解决了跨域问题,前端在请求
http://localhost:3000/pk/getbotinfo时,后端返回了404 Not Found错误。这个错误是因为后端路径和前端请求路径不匹配造成的。
- 即使解决了跨域问题,前端在请求
-
Vue Router 的错误拦截
- Vue Router 报错
No match found for location with path "/pk/getbotinfo"。说明 Vue Router 在前端试图处理/pk/getbotinfo这个路径,导致 AJAX 请求没有正确发送到后端。
- Vue Router 报错
问题解决方案
1. 解决跨域问题 (CORS)
错误原因:
- 浏览器的跨域安全策略默认阻止了前端和后端不同域的请求。需要在后端配置允许跨域。
解决方法:
- 删除之前自定义的 CORS 过滤器
CorsConfig,使用 Spring Boot 官方推荐的WebMvcConfigurer配置 CORS。
最终代码:
package com.kob.backend.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class GlobalCorsConfig {@Beanpublic WebMvcConfigurer corsConfigurer() {return new WebMvcConfigurer() {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("http://localhost:8080") // 允许前端源.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS").allowedHeaders("*").allowCredentials(true).maxAge(3600);}};}
}
2. 解决 404 Not Found 路由问题
错误原因:
- Spring Boot 默认对路径大小写敏感,且路径末尾的斜杠可能导致路由无法匹配。后端路径和前端请求路径不一致,是导致
404错误的原因。
解决方法:
- 后端控制器:去掉路由末尾的
/,并使用@GetMapping注解来清晰地定义 GET 请求。
最终代码:
@RestController
@RequestMapping("/pk") // 删除了 "/pk/" 末尾的斜杠
public class IndexController {@GetMapping("/getbotinfo") // 去掉末尾的 "/"public List<Map<String, String>> getBotInfo() {List<Map<String, String>> list = new LinkedList<>();Map<String, String> bot1 = new HashMap<>();bot1.put("name", "bot1");bot1.put("rating", "1500");Map<String, String> bot2 = new HashMap<>();bot2.put("name", "bot2");bot2.put("rating", "1500");list.add(bot1);list.add(bot2);return list;}
}
- 前端请求: 去掉 AJAX 请求 URL 中的末尾
/。
最终代码:
$.ajax({url: "http://localhost:3000/pk/getbotinfo", // 去掉末尾的斜杠type: "GET",success: resp => {console.log(resp);if (resp.length > 0) {let firstBot = resp[0];bot_name.value = firstBot.name;bot_rating.value = firstBot.rating;}},error: err => {console.error("Failed to load resource:", err);}
});
3. 处理 Vue Router 拦截问题
错误原因:
- Vue Router 试图处理
/pk/getbotinfo路径,导致 AJAX 请求被拦截。
解决方法:
- 在 Vue Router 配置中添加
catch-all路由,确保没有被定义的路径不会被前端拦截。
最终代码:
const routes = [// 其他路由{path: '*',redirect: '/' // 将未定义的路由重定向到首页或其他页面}
];
最终效果
- 跨域问题得到解决,前端能够成功请求后端 API。
404路由问题修复,路径匹配正确,后端能够正常返回数据。- Vue Router 不再干扰后端请求,确保 AJAX 请求能直接到达后端。
总结
遇到的问题:
- 跨域 (CORS) 限制。
- 前端和后端路径不匹配导致
404。 - Vue Router 拦截 AJAX 请求。
最终的解决方法:
- 使用 Spring Boot 提供的
WebMvcConfigurer配置 CORS 规则。 - 后端去掉路径中的末尾斜杠,同时前端请求路径也去掉斜杠,确保一致性。
- 调整 Vue Router 配置,避免不必要的拦截。
按照这些步骤,整个项目的前后端通信问题得到了解决。希望这些总结对你有帮助,并加快你项目的开发进度!
相关文章:
Spring Boot + Vue 前后端分离项目总结:解决 CORS 和 404 问题
Spring Boot Vue 前后端分离项目总结:解决 CORS 和 404 问题 在进行前后端分离的项目开发中,我们遇到了几个关键问题:跨域问题 (CORS) 和 404 路由匹配错误。以下是这些问题的详细分析和最终的解决方案。 问题描述 跨域请求被阻止 (CORS) 当…...
JVM篇(学习预热 - JVM正式展开 - (实战课程学习总结))(持续更新迭代)
目录 感觉也看了这么多,说一些乱七八糟的内容,完全没有实质的收获,那么现在让我们正式来预热下JVM 吧? 一、程序的执行方式 二、为什么使用 JVM 三、字节码和机器码的区别 四、JDK、JRE与JVM的关系 五、OracleJDK和OpenJDK …...
WebGL编程指南 - 入门续
相关内容:在attribute变量传递参数的基础上,通过JavaScript获取鼠标事件的坐标,再经过坐标转换传递给attribute变量;Web颜色缓冲区每次绘制之后都会重置相关函数:JavaScript鼠标事件onmousedown/onmouseup/onclick htm…...
EPS导出DWG存在地物缺失或者没有编码属性的情况
问题描述 使用eps导出dwg时,打开dwg会发现部分地物缺失或者没有编码属性。 这里就是一片空白: 解决办法 1 查看eps的图层信息,发现图层没有对应上,故此地物编码也是没有的。 2 可以右键全选本编码对象,实现批量快…...
跨境业务收款难?Zoho Books来帮忙
外贸跨境企业应收账款管理繁琐,ZohoBooks财务管理软件提供自动化解决方案,简化开票、跟进、收款和账户更新流程,提升效率和准确性,助力企业优化现金流和财务健康。 什么是应收账款? 应收账款指的是企业在提供商品或服…...
深入解析 Harris 角点检测算法:从孔径问题到响应函数的完整推导
在图像处理中,角点是非常重要的特征。为了快速、准确地检测角点,Harris 提出了 Harris 角点检测算法,它基于局部窗口内图像梯度的变化来判断角点。本文将从最基础的孔径问题(Aperture Problem)入手,通过泰勒…...
抖音视频制作怎么暂停画面,抖音视频怎么让它有暂停的效果
千万别滥用视频特效,不然它能毁掉你的抖音作品。在创作过程中,应尽量使用类似暂停画面、隐形字幕这样的视觉特效,可以显著提高作品的视觉体验。增强视频表现力的同时,也不会让画面看起来过于夸张。有关抖音视频制作怎么暂停画面的…...
Android GPIO方式解码红外数据
1 红外遥控协议 1.1 基本概念 1)NEC协议,采用PWM方式调制。38KHz载波,一般是由引导码地址码地址反码数据数据反码构成。 遥控接收头端收到的信号为:逻辑1是560us低1680us高,逻辑0是560us低560us高。 地址:u…...
基于SpringBoot+Vue的益农智慧服务平台【提供源码+答辩PPT+参考文档+项目部署】
一、项目技术架构: 本项目是一款SpringBoot益农平台的设计与实现。 该SpringBootVue的益农平台的设计与实现,后端采用SpringBoot架构,前端采用VueElementUI实现页面的快速开发,并使用关系型数据库MySQL存储系统运行数据。本系统分…...
基于springboot的在线考试与学习交流网页
作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的,前后端分离。 开发语言:Java数据库:MySQL技术:…...
JS异步编程进阶(二):rxjs与Vue、React、Angular框架集成及跨框架状态管理实现原理
在现代前端开发中,异步操作已经成为不可或缺的一部分。无论是处理网络请求、响应用户输入,还是监听外部事件,异步编程模式始终占据重要位置。而RxJS作为功能强大的异步编程库,广泛应用于多个框架之中,如Vue、React、An…...
nginx web代理
目录 1.nginx的简单介绍 2.正向代理的应用场景 2.1做访问控制 2.2审计 2.3负载分散 2.4隐私保护和匿名性 3.反向代理的应用场景如下 3.1.负载均衡 2.缓存静态内容 3.压缩和优化内容 4.提供故障转移 5.安全性和匿名性 4.正向代理 4.1web端 4.2lb01代理服务器…...
人形机器人的关节控制
人形机器人的关节控制是机器人技术中的核心环节之一,它直接关系到机器人的运动灵活性、精确度和稳定性。 一、关节结构与设计 人形机器人的关节结构通常包括底座、内圈、外圈和滚珠等组件,这些组件共同构成了关节的旋转和支撑系统。关节的设计需要考虑到承载能力、稳定性以…...
python 爬虫 入门 二、数据解析(正则、bs4、xpath)
目录 一、待匹配数据获取 二、正则 三、bs4 (一)、访问属性 (二)、获取标签的值 (三)、查询方法 四、xpath 后续:登录和代理 上一节我们已经知道了如何向服务器发送请求以获得数据&#x…...
PTX 汇编代码语法
PTX(Parallel Thread Execution)汇编是 NVIDIA 为其 GPU 提供的一种并行指令集架构(ISA),用于编写 GPU 设备代码。PTX 是一种中间表示(IR),在 CUDA 代码编译时生成,之后会…...
【mysql】统计两个相邻任务/事件的间隔时间以及每个任务的平均用时
准备步骤1. 设置查询参数部分1.1 设置需要分析的起始时间1.2. 设置需要分析的时间的长度(分析的结束时间)1.3. 设置分析内容1.4. 设置需要分析的表和字段 2. 自动计算分析2.1 设置起始序号2.2. 筛选user_log表数据并生成带序号的临时表temp_ria2.3. 通过…...
RHCE——笔记
第一章——例行性工作 1:单一致性的例行性工作 仅处理执行一次就结束 at命令 /etc/at.allow —— 写在该文件的人可以使用at命令 /etc/at.deny —— 黑名单 两个文件都不存在,则只有root可以使用 #at工作调度对应的系统服务 [rootlocalhost ~]# p…...
Spring Boot在知识管理中的应用
1系统概述 1.1 研究背景 如今互联网高速发展,网络遍布全球,通过互联网发布的消息能快而方便的传播到世界每个角落,并且互联网上能传播的信息也很广,比如文字、图片、声音、视频等。从而,这种种好处使得互联网成了信息传…...
OpenCV高级图形用户界面(14)交互式地选择一个或多个感兴趣区域函数selectROIs()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 允许用户在给定的图像上选择多个 ROI。 该函数创建一个窗口,并允许用户使用鼠标来选择多个 ROI。控制方式:使用空格键或…...
字节青训营入营考核部分题解
题库链接:https://juejin.cn/problemset?utm_sourceschool&utm_mediumyouthcamp&utm_campaignexamine 1. 计算从x到y的最小步数 问题描述 AB 实验同学每天都很苦恼如何可以更好地进行 AB 实验,每一步的流程很重要,我们目标为了…...
视频剪辑效率翻倍:Qwen3-ForcedAligner-0.6B自动字幕生成实战体验
视频剪辑效率翻倍:Qwen3-ForcedAligner-0.6B自动字幕生成实战体验 1. 为什么你需要这个字幕生成工具 手动添加字幕可能是视频制作过程中最耗时的环节之一。传统方法需要反复听录音、手动打轴、调整时间码,一个10分钟的视频可能需要花费1-2小时。而Qwen…...
Llama-3.2V-11B-cot 开发环境避坑指南:从 Anaconda 安装到依赖冲突解决
Llama-3.2V-11B-cot 开发环境避坑指南:从 Anaconda 安装到依赖冲突解决 最近在折腾 Llama-3.2V-11B-cot 这个多模态模型,发现不少朋友在第一步——搭建开发环境上就卡住了。要么是 Python 版本不对,要么是 PyTorch 装不上,最头疼…...
Phi-4-reasoning-vision-15B入门必看:视觉推理模型prompt工程要点
Phi-4-reasoning-vision-15B入门必看:视觉推理模型prompt工程要点 如果你刚接触Phi-4-reasoning-vision-15B,可能会发现一个奇怪的现象:有时候它像个博学的学者,能精准分析复杂的图表;有时候却像个固执的程序员&#…...
GTE-Chinese-Large镜像免配置实战:从启动到API调用的全流程详细步骤
GTE-Chinese-Large镜像免配置实战:从启动到API调用的全流程详细步骤 1. 镜像概述与核心价值 GTE-Chinese-Large是阿里达摩院推出的专门针对中文场景优化的文本向量化模型。这个镜像最大的特点就是开箱即用——所有依赖环境、模型文件、Web界面都已经预先配置好&am…...
UNIT-00:Berserk Interface 在AI Agent开发中的应用:从规划、工具调用到记忆
UNIT-00:Berserk Interface 在AI Agent开发中的应用:从规划、工具调用到记忆 最近和几个做AI应用的朋友聊天,大家都有个共同的感受:现在的大模型能力确实强,但很多时候还是像个“一问一答”的聊天机器人。你想让它帮你…...
PHPCMS如何实现SEO优化
PHPCMS如何实现SEO优化 随着互联网的迅猛发展,SEO优化成为了每一个网站运营者必须掌握的技能之一。对于使用PHPCMS的网站而言,SEO优化显得尤为重要。PHPCMS作为一款广泛使用的内容管理系统,其SEO优化的策略和方法值得我们深入探讨。本文将从…...
盘姬工具箱:一款值得收藏的免费无广告系统维护神器
在日常使用电脑的过程中,我们难免会遇到各种各样的问题。 系统崩溃、文件误删、右键菜单混乱、网络故障等等,这些问题都让人头疼不已。 为了解决这些问题,很多用户会安装各种专门的工具软件。 但每安装一个软件,都会占用磁盘空…...
终极Godot解包指南:3分钟学会提取游戏资源
终极Godot解包指南:3分钟学会提取游戏资源 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 想要轻松提取Godot游戏中的图片、音频和脚本资源吗?godot-unpacker正是你需要的God…...
3个技巧让旧iPhone重获新生:Legacy iOS Kit降级实战指南
3个技巧让旧iPhone重获新生:Legacy iOS Kit降级实战指南 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit …...
WebLaTeX终极指南:免费在线LaTeX编辑器,让学术写作变得如此简单
WebLaTeX终极指南:免费在线LaTeX编辑器,让学术写作变得如此简单 【免费下载链接】WebLaTex A complete alternative for Overleaf with VSCode Web Git Integration Copilot Grammar & Spell Checker Live Collaboration Support. Based on Git…...
