SpringSecurity缺少配置导致跨域配置无效,报错缺少Access-Control-Allow-Origin

旧项目不知为何一直是正常的,但是现在需求在老项目后端的基础上再加一个前端地址做兼容,但是一直报错跨域 因为旧项目正常,导致浪费半天时间才查到问题。

本来已经有了以下配置

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    @Value("${cors.allowedOrigins}")
    private String allowedOrigins;

    @Override
    protected void addCorsMappings(CorsRegistry registry) {
        if ("prod-original".equals(allowedOrigins)) {

        } else {
            registry.addMapping("/**")
                    .allowedOrigins("*")
                    .allowedMethods("*")
                    .allowedHeaders("*")
                    .allowCredentials(true);
        }
    }

但还是一直跨域报错没返回头Access-Control-Allow-Origin

gpt告知了我按我的这个配置或者查看springSecurity是否有覆盖,我因为老项目正常,一直没考虑到是Security的问题,直到不停的查资料 终于发现一篇文章

CORS跨域,使用spring security 后跨域配置失效_spring security3 cros()方法废弃了-CSDN博客

于是检查了下security配置 竟然真的没配置cros 但是我印象里有这个配置啊 可能是另一个项目的,记混了,加上后发现就可以了。

但是每一个改动都涉及老项目,这样加会不会对老项目有影响?

使用gpt进行分析

在 Spring Security 中添加 .and().cors(); 会启用 Spring Security 对 CORS(跨域资源共享)的支持。

具体影响:

  1. 启用 CORS 支持:默认情况下,Spring Security 会阻止所有跨域请求。添加 .and().cors(); 后,Spring Security 会基于应用中配置的 CorsConfigurationSource 处理跨域请求。

  2. 依赖自定义配置:如果你已经在其他地方配置了 CORS 规则(例如在 Spring MVC 配置中使用 @CrossOrigin 注解或通过自定义的 CorsConfiguration),Spring Security 会使用这些配置来处理跨域请求。

  3. 默认配置:如果没有配置 CorsConfigurationSource,Spring Security 会使用默认设置允许跨域,但这可能不适合生产环境,建议你根据需求自定义跨域配置。

总结

这行代码解决跨域问题的前提是你已经正确配置了 CORS 规则。否则,仅添加 .and().cors(); 可能并不能解决所有跨域问题。你可能还需要在 Spring MVC 或其他配置中指定允许的源、方法和头信息等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值