显示跨域问题问题照片,如何解决?

练习一个后台管理系统项目,在登陆模块集成springSecurity后无法登陆,老是显示跨域问题
问题照片:

img

如图所示,但我的项目是已经做了网关跨域处理的

img

但是不知道为什么还会出现开头的错误,找了网上说是options 的问题,但也不知是不是这个,没解决,请教一下

Security的一些配置

img

以下回答引用自chatGpt, 有用的话,请采纳哇!!!
在 Spring Security 中配置跨域请求可以通过以下两种方式:

1, 在 Spring Security 配置类中添加 CorsConfigurationSource Bean

在 Spring Security 配置类中添加 CorsConfigurationSource Bean,用于配置跨域请求。以下是一个示例:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .cors() // 开启跨域配置
            .and()
            .authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .and()
            .httpBasic();
    }

    @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("http://localhost:8080")); // 允许跨域请求的域名
        configuration.setAllowedMethods(Arrays.asList("GET","POST")); // 允许的请求方法
        configuration.setAllowedHeaders(Arrays.asList("Content-Type","Authorization")); // 允许的请求头
        configuration.setExposedHeaders(Arrays.asList("Authorization")); // 允许暴露的响应头
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }
}

2,在 Spring Security 配置类中重写 configure 方法

在 Spring Security 配置类中重写 configure 方法,并配置跨域请求。以下是一个示例:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .and()
            .httpBasic()
            .and()
            .csrf().disable() // 禁用 CSRF
            .headers()
            .frameOptions().disable() // 禁用 X-Frame-Options
            .and()
            .addFilterBefore(corsFilter(), ChannelProcessingFilter.class);
    }

    private Filter corsFilter() {
        return new OncePerRequestFilter() {
            @Override
            protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
                response.setHeader("Access-Control-Allow-Origin", "http://localhost:8080"); // 允许跨域请求的域名
                response.setHeader("Access-Control-Allow-Methods", "GET,POST"); // 允许的请求方法
                response.setHeader("Access-Control-Allow-Headers", "Content-Type,Authorization"); // 允许的请求头
                response.setHeader("Access-Control-Expose-Headers", "Authorization"); // 允许暴露的响应头
                filterChain.doFilter(request, response);
            }
        };
    }
}

以上是两种在 Spring Security 中配置跨域请求的方式。