SpringBoot3中跨域问题解决

news/2025/2/24 13:56:39/

问题

SpringBoot3 中处理跨域请求

异常

浏览器在 localhost:3000 地址请求后端 http://127.0.0.1:8080 时, 报错提示 CORS 问题.
默认使用 Get 请求正常, 其他会提示.
使用 SpringBoot 3.4.2 版本配合 SpringSecurity 配置

Access to fetch at 'http://127.0.0.1:8080/todo-task/list' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

解决

需要在 Spring Security 配置以下内容…


/*** Spring Security 配置** @author Jion*/
@Configuration
@EnableWebSecurity
@AllArgsConstructor
public class SecurityConfig {private final JwtAuthenticationFilter jwtAuthenticationFilter;private final CustomAuthenticationEntryPoint unauthorizedHandler;/*** 配置过滤器链** @param http 请求* @return 过滤器链* @throws Exception 抛出异常*/@Beanpublic SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {// 一些其他配置等...// 跨域请求http.cors(corsConfigurer -> corsConfigurer.configurationSource(corsConfigurationSource()));return http.build();}/*** 跨域配置, 仅在开发环境有必要.* 如果是发布之后, 桌面应用不会产生跨域问题.*/@Beanpublic UrlBasedCorsConfigurationSource corsConfigurationSource() {CorsConfiguration configuration = new CorsConfiguration();// 允许本地域名访问configuration.setAllowedOrigins(Arrays.asList("http://localhost:3000", "http://127.0.0.1:3000"));// 允许被本地域名访问configuration.setAllowedOriginPatterns(Arrays.asList("http://localhost:3000/**", "http://127.0.0.1:3000/**"));// 允许所有请求方法configuration.setAllowedMethods(List.of("*"));// 允许所有请求头configuration.setAllowedHeaders(List.of("*"));// 允许所有响应头configuration.setExposedHeaders(List.of("*"));// 允许携带凭证configuration.setAllowCredentials(true);// 跨域请求配置UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();// 匹配所有请求路径source.registerCorsConfiguration("/**", configuration);return source;}
}

http://www.ppmy.cn/news/1574634.html

相关文章

【java】就近原则

在 Java 中,就近原则(也称为“局部优先原则”)是指:当变量或方法的名字发生冲突时,程序会优先使用最近定义的变量或方法。这个原则主要适用于变量、方法调用以及作用域的范围。 就近原则的核心思想 局部变量优先于成员…

FunAudioLLM:用语音大模型解锁智能语音交互的无限可能

摘要 随着人工智能技术的飞速发展,语音处理已成为人机交互的核心领域之一。本文将介绍 FunAudioLLM 模型家族中的两个重要成员:SenseVoiceSmall 和 CosyVoice2-0.5B,探讨它们在语音识别、语音合成和情感分析中的应用,并提供实用的…

MATLAB | 设置滑动窗口计算栅格数据的CV变异系数

一、变异系数 变异系数(CV)是衡量数据稳定性的重要指标,表示数据的波动程度,计算方式是标准差与均值的比值。在栅格数据分析中,较低的变异系数意味着数据变化较小、稳定性较高,而较高的变异系数则表明数据…

[Android] GKD v1.10.0 β1—— 开屏 及 内部信息流 广告跳过工具

[Android] GKD v1.10.0 β1—— 开屏 及 内部信息流 广告跳过工具 链接:https://pan.xunlei.com/s/VOJnTWH3DBPkCjYawY_PFqCxA1?pwdhngj# GKD(详情请戳 作者项目地址)是一款免费开源简洁多规则的自动跳过广告的软件,整体基于k…

CSDN博客写作教学(一):初识markdown编辑器(纯干货)

名人说:悟已往之不谏,知来者之可追。 ——《归去来兮辞》陶渊明 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、在哪里写?二、该怎么写?三、完整写作流程 很高兴…

0基础玩转python(打怪升级篇)第一章1.1安装python编辑器

第一章 新手村 1.1合适的武器 (安装python编辑器) 新手村位于代码大陆的东北部,四面环山,高大的城墙外坐落着一条护城河。一位少年缓步走进城内,看到了城内集市热闹非凡。 你叫做“阿印” 是一位勇士 当前等级o Lv 最…

mysql系列9—mysql的MVCC机制

背景 mysql提供了读未提交、读已提交、可重复读、串行化四种隔离级别,默认的隔离界别为可重复读。其中,不可重复度场景下,每次直接读取最新记录(即使事务未提交);串行化对于所有的读写都加锁,因此,对二者不…

如何用deepseek快速生成思维导图和流程图?

一起来看看md格式和mermaid格式,与deepseek的碰撞会产生怎样的魔法吧! 1、md格式deepseek,快速生成思维导图 Markdown 是一种轻量级的标记语言,旨在以易读易写的纯文本格式编写文档,并能够轻松转换为结构化的 HTML&a…