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

SpringMVC跨域问题解决方案

当Web应用程序尝试从一个源(例如 http://localhost:9090)向另一个不同的源(例如 http://localhost:8080)发起请求时,发现报错:
在这里插入图片描述
在这里插入图片描述

报错原因:请求被CORS策略拦截了

跨域问题概述
当Web应用程序尝试从一个源(例如 http://localhost:9090)向另一个不同的源(例如 http://localhost:8080)发起请求时,如果这两个源的协议、域名或端口有任何不同,则这种请求被视为跨域请求。浏览器为了安全考虑,会默认阻止这样的请求,除非服务器明确允许。

在之前的项目中,由于前后端代码部署在同一服务下,使用相同的端口号,因此没有遇到跨域问题。然而,在当前的前后端分离架构中,前端运行在一个独立的服务上(如端口9090),而后端API则运行在另一个服务上(如端口8080)。这导致了跨域访问的问题。
SSM 结构中的跨域处理
SSM(Spring + Spring MVC + MyBatis)结构中,Spring MVC框架默认遵循同源策略,不允许跨域请求以增强安全性。这意味着,除非特别配置,否则来自外部的请求将被拒绝。例如,当你正在浏览某个网站时,如果该网站试图向你的银行网站发送请求,这种行为通常会被禁止,除非银行网站明确指定了允许的条件和授权。
解决方案
为了解决跨域问题,可以在后端添加CORS支持,允许特定的来源访问资源。以下是在Spring MVC中启用CORS的一种方法:

  • 创建配置类:在项目的config包内创建一个新的Java类,命名为WebConfig。
  • 编写CORS配置:在WebConfig类中定义一个方法来设置CORS规则,并将其注册到Spring MVC中。
package cn.tedu.ivos.base.config;import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** 跨域处理配置类* @version 1.0* @date 2024-11-29*/
@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedHeaders("*").allowedMethods("*").allowedOriginPatterns("*").allowCredentials(true).maxAge(3600);}
}
  • 重启后端工程:保存更改并重启后端应用,确保新的CORS配置生效。

通过上述步骤,你能够为特定的来源(在这个例子中是http://localhost:9090)开启跨域资源共享,从而解决前端与后端之间因端口不同而导致的跨域问题。

相关文章:

SpringMVC跨域问题解决方案

当Web应用程序尝试从一个源(例如 http://localhost:9090)向另一个不同的源(例如 http://localhost:8080)发起请求时,发现报错: 报错原因:请求被CORS策略拦截了 跨域问题概述 当Web应用程序尝试…...

【语音识别】Zipformer

Zipformer 是kaldi 团队于2024研发的序列建模模型。相比较于 Conformer、Squeezeformer、E-Branchformer等主流 ASR 模型,Zipformer 具有效果更好、计算更快、更省内存等优点。并在 LibriSpeech、Aishell-1 和 WenetSpeech 等常用数据集上取得了当时最好的 ASR 结果…...

vue+uniapp+echarts的使用(H5环境下echarts)

1.安装 npm install echarts4.9.0 --save // 带版本号 2.main.js中全局引用 // import echarts from echarts // 如果是5.0以上版本用这个 import * as echarts from echarts Vue.prototype.$echartsecharts 3.使用 <template><view id"box" style"w…...

【Python网络爬虫笔记】7-网络爬虫的搜索工具re模块

目录 一、网络爬虫中的正则表达式和re模块&#xff08;一&#xff09;数据提取的精确性&#xff08;二&#xff09;处理复杂的文本结构&#xff08;三&#xff09;提高数据处理效率 二、正则表达式的内涵&#xff08;一&#xff09;、常用元字符&#xff08;二&#xff09;、量…...

为什么选择 React Native 作为跨端方案

为什么选择 React Native 作为跨端方案 我深刻地知道&#xff0c;没有完美的跨端技术&#xff0c;只有适合的场景。脱离适用场景去谈跨端技术没有什么意义。 适用场景 1. 业务更新迭代较快的团队与出海团队 React Native 特别适合那些业务更新频繁、需要快速响应市场的团队…...

服务器与普通电脑有什么区别?

服务器和普通电脑&#xff08;通常指的是个人计算机&#xff0c;即PC&#xff09;有众多相似之处&#xff0c;主要构成包含&#xff1a;CPU&#xff0c;内存&#xff0c;芯片&#xff0c;I/O总线设备&#xff0c;电源&#xff0c;机箱及操作系统软件等&#xff0c;鉴于使用要求…...

Oracle 12c Data Guard 环境中的 GAP 修复方法

概述 上文中提到Oracle 12c 引入了多项新技术来简化 Data Guard 环境中的 GAP 修复过程&#xff0c;如&#xff08;RECOVER … FROM SERVICE&#xff09;。这些新特性不仅减少了操作步骤&#xff0c;还提高了效率和准确性。本文档将详细说明如何利用这些新特性进行 GAP 修复。…...

力扣 三角dp

动态规划基础题&#xff0c;当前所在元素来自上一行的两列的值。 题目 从图可以看出&#xff0c;每一行的第一个数与最后一个数都是1&#xff0c;然后中间的数是来自它左上方和右上方的数的和。当然并不是要打印这个三角形的形状&#xff0c;因此可以想到正常的打印方式应该是…...

SQL基础语法全解析(上篇)

一、基本概念 1. 数据库术语 数据库&#xff08;database&#xff09; - 保存有组织的数据的容器&#xff08;通常是一个文件或一组文件&#xff09;。数据表&#xff08;table&#xff09; - 某种特定类型数据的结构化清单。模式&#xff08;schema&#xff09; - 关于数据库…...

【笔记】Linux服务器端使用百度网盘

1、在python环境下&#xff0c;下载bypy pip install bypy 2、第一次连接需要认证 bypy info 认证通过后百度网盘会出现bypy文件夹&#xff0c;如下 3、查看当前文件夹下的文件 bypy list 若有很多文件夹&#xff0c;可在后面增加文件夹名称&#xff0c;列出对应位置下的文件&a…...

UEFI Spec 学习笔记---3 - Boot Manager(3)

3.2 Boot Manager Policy Protocol EFI_BOOT_MANAGER_POLICY_PROTOCOL----EFI应用程序使用该协议请求UEFI引导管理器使用平台策略连接设备。 typedef struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL EFI_BOOT_MANAGER_POLICY_PROTOCOL; struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL…...

ATTCK红队评估实战靶场(四)

靶机链接&#xff1a;http://vulnstack.qiyuanxuetang.net/vuln/detail/6/ 环境搭建 新建两张仅主机网卡&#xff0c;一张192.168.183.0网段&#xff08;内网网卡&#xff09;&#xff0c;一张192.168.157.0网段&#xff08;模拟外网网段&#xff09;&#xff0c;然后按照拓补…...

Android Studio 历史版本下载

Android Studio 历史版本下载 官方链接&#xff1a;https://developer.android.google.cn/studio/archive 通过gradle插件版本反查Android Studio历史版本 Android Studio Ladybug | 2024.2.1 October 1, 2024 【https://redirector.gvt1.com/edgedl/android/studio/ide-zip…...

微信小程序px和rpx单位互转方法

js代码如下 Page({data: {width: 0,width2: 0},onLoad: function (options) {let px this.pxToRpx(380)let rpx this.rpxToPx(730.7692307692307) // 检查两个互转是否是相同即可,例如pxToRpx(380)转成730.7692307692307 则rpxToPx(730.7692307692307)如果是380则代表互转没…...

Vercel 部署与管理指南:简化前端应用的自动化部署流程

引言 在现代的前端开发中&#xff0c;部署和托管项目一直是开发者关注的重要环节。Vercel&#xff0c;作为一个专注于简化前端开发和部署的平台&#xff0c;凭借其强大的自动化功能、全球内容分发网络&#xff08;CDN&#xff09;以及对 Next.js 等框架的优越支持&#xff0c;…...

Java11使用JVM同一日志框架启用日志记录

你可以使用-Xlog选项配置或启用Java虚拟机同一日志框架的日志记录。 -Xlog:gc*trace:file/Users/xx/gc-%t.log:time,tags,level,pid,tid,hostname,path:filecount3,filesize10K -Xlog:gc*trace:stdout:time,tags,level,pid,tid,hostname:filecount3,filesize10K -Xlog:gc*trac…...

onlyoffice实现文档比对(Beta版)-纯文字比对(非OCR)

一、说明 文档比对光靠前端或者后端是无法实现的。 该文中的实现方案为&#xff1a;onlyofficejava。java进行文档差异化比较并输出对比结果&#xff0c;only进行得到结果处理渲染。 此方案目前为Beta版本&#xff0c;简单Word Demo实现了比对结果。css、关联动态效果登将在后期…...

JS querySelector方法的优点

1. 灵活性 支持所有 CSS 选择器 ID 选择器&#xff1a;#id 示例&#xff1a;document.querySelector(#myId)解释&#xff1a;选择 id 为 myId 的元素。类选择器&#xff1a;.class 示例&#xff1a;document.querySelector(.myClass)解释&#xff1a;选择具有 class 为 myCla…...

利用获取商品详情API:item_get可以获取到淘宝商品详情的哪些数据?

先来看下测试的返回数据吧 items: { total_results: 76, totalpage: 8, page_size: 10, page: "1", item: [ { rate_content: "和我家的鞋柜特别搭&#xff0c;加上这一条遮挡布&#xff0c;感觉整洁多了&#xff0c;布料不是硬邦邦的那种&#xff0c;很满意。…...

【大数据学习 | 面经】Spark 3.x 中的AQE(自适应查询执行)

Spark 3.x 中的自适应查询执行&#xff08;Adaptive Query Execution&#xff0c;简称 AQE&#xff09;通过多种方式提升性能&#xff0c;主要包括以下几个方面&#xff1a; 动态合并 Shuffle 分区&#xff08;Coalescing Post Shuffle Partitions&#xff09;&#xff1a; 当 …...

企业级MCP Server OAuth授权接入的七层防御实践

1. 这不是又一篇“OAuth流程图”——企业级MCP Server为什么必须自己实现授权接入你有没有遇到过这样的场景&#xff1a;公司新上线的内部运维平台&#xff08;我们暂且叫它MCP&#xff0c;即Monitoring & Control Platform&#xff09;需要对接钉钉、飞书或企业微信的组织…...

机器学习赋能非结构网格CFD:GNN、PINN与降阶建模实战

1. 项目概述&#xff1a;机器学习如何重塑非结构网格CFD 在计算流体力学&#xff08;CFD&#xff09;领域&#xff0c;非结构网格是处理复杂几何形状的“瑞士军刀”。与规则排列的结构化网格不同&#xff0c;非结构网格由不规则分布的节点和单元&#xff08;如三角形、四面体&a…...

从零搭建流媒体服务器:用ZLMediaKit + FFmpeg在CentOS上实现直播推拉流(完整配置与测试)

从零搭建流媒体服务器&#xff1a;用ZLMediaKit FFmpeg在CentOS上实现直播推拉流&#xff08;完整配置与测试&#xff09; 流媒体技术正在重塑现代内容分发的格局。想象一下&#xff0c;你正在开发一个在线教育平台&#xff0c;需要实时传输讲师的高清视频&#xff1b;或者运营…...

别再手动写日报了!Claude项目中枢搭建全教程(含API对接、敏感信息脱敏、审计留痕三重安全机制)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Claude项目中枢的定位与核心价值 Claude项目中枢是整个AI协作体系的调度核心与语义枢纽&#xff0c;它不直接执行模型推理&#xff0c;而是承担上下文治理、权限编排、多模态协议适配与可信链路审计等关键职能…...

告别K-means!用DBSCAN搞定雷达点云聚类,手把手教你调参(附Matlab代码)

毫米波雷达点云聚类的DBSCAN实战&#xff1a;从算法原理到参数调优 在自动驾驶和智能交通系统中&#xff0c;毫米波雷达因其全天候工作能力和稳定的测距测速性能&#xff0c;成为不可或缺的环境感知传感器。然而&#xff0c;原始雷达数据往往呈现为稀疏、噪声密集且分布不规则的…...

【2024播客降本增效终极方案】:单人团队如何用开源TTS实现月产60期高保真节目(附实测MOS分对比表)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;AI语音合成在播客制作中的应用 AI语音合成技术正深刻重塑播客内容的生产流程&#xff0c;从脚本转语音、多角色配音到个性化音色定制&#xff0c;已实现端到端自动化与高质量听感的统一。相比传统录音方式&am…...

Midjourney火焰生成实战手册(含17组已验证火纹Prompt+SDXL对比基准数据)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Midjourney火焰生成的核心原理与技术边界 Midjourney 并不原生支持“火焰生成”这一独立功能&#xff0c;其图像合成能力完全依赖于文本提示&#xff08;prompt&#xff09;对扩散模型隐空间的引导。所谓“火…...

大白话拆解AI黑话!从LLM到Agent,一篇扫盲无压力

前言&#xff1a;别再被AI名词劝退了 有没有一种感觉&#xff1a;现在刷技术文章、看AI项目、聊行业趋势&#xff0c;满屏都是 LLM、Token、上下文、RAG、Agent、幻觉…… 每个词都似懂非懂&#xff0c;搜完解释看完就忘&#xff0c;想用的时候依旧一头雾水。 其实所有AI名词&a…...

STM32MP1 M4内核定时器中断配置与调试实战

1. 项目概述&#xff1a;深入STM32MP1的M4内核定时器世界在嵌入式开发里&#xff0c;定时器&#xff08;Timer&#xff09;就像系统的心跳和闹钟&#xff0c;是驱动一切周期性任务和精确时序控制的基础。对于STM32MP1这颗强大的异构多核处理器&#xff0c;其Cortex-M4协处理器侧…...

MySQL 5.7.12 + Druid 连接池“只读事务”异常深度剖析(Cannot execute statement in a READ ONLY transaction)

一、故障现象 在 MySQL 5.7.12 环境下&#xff0c;使用 Druid 连接池的应用偶尔会抛出以下异常&#xff1a; Cannot execute statement in a READ ONLY transaction诡异特征&#xff1a; 偶发性出现&#xff0c;并非每次操作都复现conn.isReadOnly() 返回 false&#xff0c;但 …...