当前位置: 首页 > news >正文

Spring Boot + Vue 前后端分离项目总结:解决 CORS 和 404 问题

Spring Boot + Vue 前后端分离项目总结:解决 CORS 和 404 问题

在进行前后端分离的项目开发中,我们遇到了几个关键问题:跨域问题 (CORS) 和 404 路由匹配错误。以下是这些问题的详细分析和最终的解决方案。


问题描述

  1. 跨域请求被阻止 (CORS)

    • 当前端在 http://localhost:8080 发送 AJAX 请求到后端 http://localhost:3000 时,浏览器由于安全策略阻止了跨域请求。这导致了前端无法获取到后端的数据,出现了 CORS policy 错误。
  2. 路径匹配的 404 Not Found 错误

    • 即使解决了跨域问题,前端在请求 http://localhost:3000/pk/getbotinfo 时,后端返回了 404 Not Found 错误。这个错误是因为后端路径和前端请求路径不匹配造成的。
  3. Vue Router 的错误拦截

    • Vue Router 报错 No match found for location with path "/pk/getbotinfo"。说明 Vue Router 在前端试图处理 /pk/getbotinfo 这个路径,导致 AJAX 请求没有正确发送到后端。

问题解决方案

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: '/' // 将未定义的路由重定向到首页或其他页面}
];

最终效果

  1. 跨域问题得到解决,前端能够成功请求后端 API。
  2. 404 路由问题修复,路径匹配正确,后端能够正常返回数据。
  3. Vue Router 不再干扰后端请求,确保 AJAX 请求能直接到达后端。

总结

遇到的问题:

  • 跨域 (CORS) 限制。
  • 前端和后端路径不匹配导致 404
  • Vue Router 拦截 AJAX 请求。

最终的解决方法:

  • 使用 Spring Boot 提供的 WebMvcConfigurer 配置 CORS 规则。
  • 后端去掉路径中的末尾斜杠,同时前端请求路径也去掉斜杠,确保一致性。
  • 调整 Vue Router 配置,避免不必要的拦截。

按照这些步骤,整个项目的前后端通信问题得到了解决。希望这些总结对你有帮助,并加快你项目的开发进度!

相关文章:

Spring Boot + Vue 前后端分离项目总结:解决 CORS 和 404 问题

Spring Boot Vue 前后端分离项目总结&#xff1a;解决 CORS 和 404 问题 在进行前后端分离的项目开发中&#xff0c;我们遇到了几个关键问题&#xff1a;跨域问题 (CORS) 和 404 路由匹配错误。以下是这些问题的详细分析和最终的解决方案。 问题描述 跨域请求被阻止 (CORS) 当…...

JVM篇(学习预热 - JVM正式展开 - (实战课程学习总结))(持续更新迭代)

目录 感觉也看了这么多&#xff0c;说一些乱七八糟的内容&#xff0c;完全没有实质的收获&#xff0c;那么现在让我们正式来预热下JVM 吧&#xff1f; 一、程序的执行方式 二、为什么使用 JVM 三、字节码和机器码的区别 四、JDK、JRE与JVM的关系 五、OracleJDK和OpenJDK …...

WebGL编程指南 - 入门续

相关内容&#xff1a;在attribute变量传递参数的基础上&#xff0c;通过JavaScript获取鼠标事件的坐标&#xff0c;再经过坐标转换传递给attribute变量&#xff1b;Web颜色缓冲区每次绘制之后都会重置相关函数&#xff1a;JavaScript鼠标事件onmousedown/onmouseup/onclick htm…...

EPS导出DWG存在地物缺失或者没有编码属性的情况

问题描述 使用eps导出dwg时&#xff0c;打开dwg会发现部分地物缺失或者没有编码属性。 这里就是一片空白&#xff1a; 解决办法 1 查看eps的图层信息&#xff0c;发现图层没有对应上&#xff0c;故此地物编码也是没有的。 2 可以右键全选本编码对象&#xff0c;实现批量快…...

跨境业务收款难?Zoho Books来帮忙

外贸跨境企业应收账款管理繁琐&#xff0c;ZohoBooks财务管理软件提供自动化解决方案&#xff0c;简化开票、跟进、收款和账户更新流程&#xff0c;提升效率和准确性&#xff0c;助力企业优化现金流和财务健康。 什么是应收账款&#xff1f; 应收账款指的是企业在提供商品或服…...

深入解析 Harris 角点检测算法:从孔径问题到响应函数的完整推导

在图像处理中&#xff0c;角点是非常重要的特征。为了快速、准确地检测角点&#xff0c;Harris 提出了 Harris 角点检测算法&#xff0c;它基于局部窗口内图像梯度的变化来判断角点。本文将从最基础的孔径问题&#xff08;Aperture Problem&#xff09;入手&#xff0c;通过泰勒…...

抖音视频制作怎么暂停画面,抖音视频怎么让它有暂停的效果

千万别滥用视频特效&#xff0c;不然它能毁掉你的抖音作品。在创作过程中&#xff0c;应尽量使用类似暂停画面、隐形字幕这样的视觉特效&#xff0c;可以显著提高作品的视觉体验。增强视频表现力的同时&#xff0c;也不会让画面看起来过于夸张。有关抖音视频制作怎么暂停画面的…...

Android GPIO方式解码红外数据

1 红外遥控协议 1.1 基本概念 1&#xff09;NEC协议&#xff0c;采用PWM方式调制。38KHz载波&#xff0c;一般是由引导码地址码地址反码数据数据反码构成。 遥控接收头端收到的信号为&#xff1a;逻辑1是560us低1680us高&#xff0c;逻辑0是560us低560us高。 地址&#xff1a;u…...

基于SpringBoot+Vue的益农智慧服务平台【提供源码+答辩PPT+参考文档+项目部署】

一、项目技术架构&#xff1a; 本项目是一款SpringBoot益农平台的设计与实现。 该SpringBootVue的益农平台的设计与实现&#xff0c;后端采用SpringBoot架构&#xff0c;前端采用VueElementUI实现页面的快速开发&#xff0c;并使用关系型数据库MySQL存储系统运行数据。本系统分…...

基于springboot的在线考试与学习交流网页

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的&#xff0c;前后端分离。 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;…...

JS异步编程进阶(二):rxjs与Vue、React、Angular框架集成及跨框架状态管理实现原理

在现代前端开发中&#xff0c;异步操作已经成为不可或缺的一部分。无论是处理网络请求、响应用户输入&#xff0c;还是监听外部事件&#xff0c;异步编程模式始终占据重要位置。而RxJS作为功能强大的异步编程库&#xff0c;广泛应用于多个框架之中&#xff0c;如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 &#xff08;一&#xff09;、访问属性 &#xff08;二&#xff09;、获取标签的值 &#xff08;三&#xff09;、查询方法 四、xpath 后续&#xff1a;登录和代理 上一节我们已经知道了如何向服务器发送请求以获得数据&#x…...

PTX 汇编代码语法

PTX&#xff08;Parallel Thread Execution&#xff09;汇编是 NVIDIA 为其 GPU 提供的一种并行指令集架构&#xff08;ISA&#xff09;&#xff0c;用于编写 GPU 设备代码。PTX 是一种中间表示&#xff08;IR&#xff09;&#xff0c;在 CUDA 代码编译时生成&#xff0c;之后会…...

【mysql】统计两个相邻任务/事件的间隔时间以及每个任务的平均用时

准备步骤1. 设置查询参数部分1.1 设置需要分析的起始时间1.2. 设置需要分析的时间的长度&#xff08;分析的结束时间&#xff09;1.3. 设置分析内容1.4. 设置需要分析的表和字段 2. 自动计算分析2.1 设置起始序号2.2. 筛选user_log表数据并生成带序号的临时表temp_ria2.3. 通过…...

RHCE——笔记

第一章——例行性工作 1&#xff1a;单一致性的例行性工作 仅处理执行一次就结束 at命令 /etc/at.allow —— 写在该文件的人可以使用at命令 /etc/at.deny —— 黑名单 两个文件都不存在&#xff0c;则只有root可以使用 #at工作调度对应的系统服务 [rootlocalhost ~]# p…...

Spring Boot在知识管理中的应用

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…...

OpenCV高级图形用户界面(14)交互式地选择一个或多个感兴趣区域函数selectROIs()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 允许用户在给定的图像上选择多个 ROI。 该函数创建一个窗口&#xff0c;并允许用户使用鼠标来选择多个 ROI。控制方式&#xff1a;使用空格键或…...

字节青训营入营考核部分题解

​ 题库链接&#xff1a;https://juejin.cn/problemset?utm_sourceschool&utm_mediumyouthcamp&utm_campaignexamine 1. 计算从x到y的最小步数 问题描述 AB 实验同学每天都很苦恼如何可以更好地进行 AB 实验&#xff0c;每一步的流程很重要&#xff0c;我们目标为了…...

视频剪辑效率翻倍:Qwen3-ForcedAligner-0.6B自动字幕生成实战体验

视频剪辑效率翻倍&#xff1a;Qwen3-ForcedAligner-0.6B自动字幕生成实战体验 1. 为什么你需要这个字幕生成工具 手动添加字幕可能是视频制作过程中最耗时的环节之一。传统方法需要反复听录音、手动打轴、调整时间码&#xff0c;一个10分钟的视频可能需要花费1-2小时。而Qwen…...

Llama-3.2V-11B-cot 开发环境避坑指南:从 Anaconda 安装到依赖冲突解决

Llama-3.2V-11B-cot 开发环境避坑指南&#xff1a;从 Anaconda 安装到依赖冲突解决 最近在折腾 Llama-3.2V-11B-cot 这个多模态模型&#xff0c;发现不少朋友在第一步——搭建开发环境上就卡住了。要么是 Python 版本不对&#xff0c;要么是 PyTorch 装不上&#xff0c;最头疼…...

Phi-4-reasoning-vision-15B入门必看:视觉推理模型prompt工程要点

Phi-4-reasoning-vision-15B入门必看&#xff1a;视觉推理模型prompt工程要点 如果你刚接触Phi-4-reasoning-vision-15B&#xff0c;可能会发现一个奇怪的现象&#xff1a;有时候它像个博学的学者&#xff0c;能精准分析复杂的图表&#xff1b;有时候却像个固执的程序员&#…...

GTE-Chinese-Large镜像免配置实战:从启动到API调用的全流程详细步骤

GTE-Chinese-Large镜像免配置实战&#xff1a;从启动到API调用的全流程详细步骤 1. 镜像概述与核心价值 GTE-Chinese-Large是阿里达摩院推出的专门针对中文场景优化的文本向量化模型。这个镜像最大的特点就是开箱即用——所有依赖环境、模型文件、Web界面都已经预先配置好&am…...

UNIT-00:Berserk Interface 在AI Agent开发中的应用:从规划、工具调用到记忆

UNIT-00&#xff1a;Berserk Interface 在AI Agent开发中的应用&#xff1a;从规划、工具调用到记忆 最近和几个做AI应用的朋友聊天&#xff0c;大家都有个共同的感受&#xff1a;现在的大模型能力确实强&#xff0c;但很多时候还是像个“一问一答”的聊天机器人。你想让它帮你…...

PHPCMS如何实现SEO优化

PHPCMS如何实现SEO优化 随着互联网的迅猛发展&#xff0c;SEO优化成为了每一个网站运营者必须掌握的技能之一。对于使用PHPCMS的网站而言&#xff0c;SEO优化显得尤为重要。PHPCMS作为一款广泛使用的内容管理系统&#xff0c;其SEO优化的策略和方法值得我们深入探讨。本文将从…...

盘姬工具箱:一款值得收藏的免费无广告系统维护神器

在日常使用电脑的过程中&#xff0c;我们难免会遇到各种各样的问题。 系统崩溃、文件误删、右键菜单混乱、网络故障等等&#xff0c;这些问题都让人头疼不已。 为了解决这些问题&#xff0c;很多用户会安装各种专门的工具软件。 但每安装一个软件&#xff0c;都会占用磁盘空…...

终极Godot解包指南:3分钟学会提取游戏资源

终极Godot解包指南&#xff1a;3分钟学会提取游戏资源 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 想要轻松提取Godot游戏中的图片、音频和脚本资源吗&#xff1f;godot-unpacker正是你需要的God…...

3个技巧让旧iPhone重获新生:Legacy iOS Kit降级实战指南

3个技巧让旧iPhone重获新生&#xff1a;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终极指南&#xff1a;免费在线LaTeX编辑器&#xff0c;让学术写作变得如此简单 【免费下载链接】WebLaTex A complete alternative for Overleaf with VSCode Web Git Integration Copilot Grammar & Spell Checker Live Collaboration Support. Based on Git…...