使用 Spring Boot、Spring Security 和 React 的 CORS 错误

CORS errors using Spring Boot, Spring Security and React

早上好。

过去两天我一直在与这个问题作斗争,所以我决定post一个关于它的问题。

基本上我有一个 Spring Boot 项目,它通过 React JS 前端执行基本的 CRUD 操作。 在我向项目添加 Spring 安全性之前,一切似乎都运行良好。从那时起,每当我从前端发出请求(使用 axios)时,我都会收到以下错误:

Access to XMLHttpRequest at 'http://localhost:8080/calciatore/list' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

在实施 Spring 安全性之前,仅在我的后端控制器中使用 @CrossOrigin(origins = "*") 一切都运行良好,但现在我总是会收到该错误,即使 URL 配置为不通过 Spring 安全登录保护。

与此同时,我从 Postman 发出任何请求(POST 用于登录或 GET 用于数据获取)都没有问题。

我尝试在整个互联网上寻找解决方案,但仍然没有找到。

如果您需要我展示部分代码,请询问。

提前致谢。

尝试使用如下代码所示的全局 CORS 配置,以允许所有端点使用 CORS。

import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Component
public class CorsConfig {

    @Bean
    public WebMvcConfigurer corsConfigurer() {

        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry
                        .addMapping("/**")
                        .allowedMethods(CorsConfiguration.ALL)
                        .allowedHeaders(CorsConfiguration.ALL)
                        .allowedOriginPatterns(CorsConfiguration.ALL);
            }
        };
    }
}

自从 spring 启动 2.4 后,您应该使用 allowedOriginPatterns 而不是 allowedOrigins。此外,您不能将通配符“*”与 credentials : true

一起使用